`

ProxyPattern_代理模式

    博客分类:
  • j2se
 
阅读更多

1:此例演示 使用JDK代理模式,使用此模式须实现接口,对没有实现接口的类的代理可以用 CGLIB代理

package cn.proxy.test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * 代理模式(使用JDKProxy代理)
 */
public class ProxyClass implements InvocationHandler {
	
	private RealInterface realInterface; // 实际被调用对象
	private RealInterface warpedInterface; // 经包装过的代理对象
	
	RealInterface bind(RealInterface realInterface){
		this.realInterface = realInterface;
		// 生成代理对象
		this.warpedInterface = (RealInterface)Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[]{RealInterface.class}, this);
		return warpedInterface;
	}

	// 将对实际接口的调用转发给 实现InvocationHandler的类
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		// 拦截方法
		if("sayHello".equals(method.getName())){
			return "sayHello 被拦截...";
		}
		return method.invoke(realInterface, args);
	}
	
	public static void main(String[] args) {
		ProxyClass instance = new ProxyClass();
		RealInterface proxyInstance = instance.bind(new InterfaceInstance());
		System.out.println(proxyInstance.sayHello("lisi"));
		System.out.println(proxyInstance.sayHi("wangwu"));
	}

}

interface RealInterface {
	
	public String sayHello(String name);
	
	public String sayHi(String name);

}

class InterfaceInstance implements RealInterface {

	@Override
	public String sayHello(String name) {
		return name + " sayHello....";
	}

	@Override
	public String sayHi(String name) {
		return name + " sayHi....";
	} 
	
}
分享到:
评论

相关推荐

    04_ProxyPattern 为别人做嫁衣

    “工具”可能指的是使用代理模式构建的一些实用工具,如日志拦截器、性能监控工具等,这些工具往往会在目标方法调用前后添加额外的操作,而这一切都得益于代理模式。 【压缩包子文件的文件名称列表】: Design...

    ProxyPattern:代理模式的实现

    代理模式是一种设计模式,它允许我们在不改变原始对象行为的情况下,为对象添加额外的功能或控制。在Java中,代理模式的实现通常分为静态代理和动态代理两种方式。 **静态代理** 在静态代理中,我们需要创建一个...

    设计模式:动态代理模式(ProxyPattern)学习指南

    代理模式中的静态代理模式存在一些特点:1个静态代理只服务1种类型的目标对象若要服务多类型的目标对象,则需要为每种目标对象都实现一个静态代理对象关于静态代理模式可以看文章:代理模式(ProxyPattern):静态...

    [结构型模式] 代理模式的理解

    例如,`ProxyPattern.cpp`和`ProxyPattern.h`可能是实现代理模式的代码文件。`ProxyPattern.cpp`可能包含代理对象的实现,而`ProxyPattern.h`则定义了代理和真实对象的接口。 在实际编程中,我们可以通过如下步骤...

    proxypattern.zip

    这个"proxypattern.zip"文件很显然是一个关于代理模式的示例代码或者教程,用于帮助开发者理解并应用代理模式。下面,我们将深入探讨代理模式的核心概念、作用以及如何在实际编程中使用。 代理模式的主要目的是为...

    ProxyPattern.unitypackage

    这是一个关于设计模式中的代理模式例子,C#,Vs205,Unity 5.6.3f1 (64-bit)有需要的请下载!本来不想设置积分,可是最低1分,没办法!

    JAVA设计模式-设计模式公司出品

    2. 代理模式(PROXYPATTERN):代理模式为其他对象提供一种代理以控制对这个对象的访问。代理对象在客户和目标对象之间起到中介作用。 3. 单例模式(SINGLETONPATTERN):单例模式确保一个类只有一个实例,并提供一...

    Proxy 模式学习代码

    Proxy模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用。这种模式在软件工程中广泛应用,主要用于控制对真实对象的访问,提供额外的功能,如日志、...

    javascript 设计模式

    它自己也实现了一系列的设计模式,比如常见的CompositePattern(组合模式)、AdapterPattern(适配器模式)、ObserverPattern(观察者模式)、IteratorPattern(迭代器模式)和ProxyPattern(代理模式)等。...

    深入浅出设计模式(中文版电子版)

    4.7ProxyPattern(代理模式) 154 4.7.1定义 154 4.7.2几个现实中的实例 156 4.7.3C#实例——数学代理 158 4.7.4Java实例——Socket回声 160 4.7.5优势和缺陷 165 4.7.6应用情景 165 第5章GoF-...

    java24种设计模式.pdf

    - 代理模式(ProxyPattern):为其他对象提供一种代理以控制对这个对象的访问。 - 单例模式(SingletonPattern):确保一个类只有一个实例,并提供一个全局访问点。 - 多例模式(MultitonPattern):确保一个类有...

    java设计模式之禅

    代理模式(ProxyPattern)是一种结构型模式,它为其他对象提供一种代理以控制对这个对象的访问。代理模式在不改变原有对象的基础上,通过引入一个代理对象来间接访问目标对象,可以在访问对象前后做一些额外的处理。...

    Java设计模式经典搞笑珍藏

    2. **代理模式(ProxyPattern)**:提供一个代理对象来代表另一个对象的访问,可以在访问对象时增加额外的逻辑。 3. **单例模式(SingletonPattern)**:确保一个类只有一个实例,并提供一个全局访问点。 4. **多...

    Head First模式设计配套源码

    源码包`HeadFirst设计模式_src`中包含的文件,很可能是书中各个章节对应的示例代码,涵盖了多种经典的设计模式。设计模式是软件工程中的一种最佳实践,是解决常见问题的经验总结,它们是经过时间考验、可重用的解决...

    C#设计模式

    16. 代理模式(ProxyPattern): 代理模式为另一个对象提供一个代理或占位符以控制对这个对象的访问。通常,在访问实际对象之前,可以在代理类中实现额外的操作,如权限验证、延迟加载等。 17. 享元模式...

    java设计模式源码-DesignPattern:设计模式(Java实现源码)

    java 设计模式 源码 欢迎访问DesignPattern项目 DesignPattern项目是设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象...代理模式(proxyPattern) 责任链模式(chainPattern) 命令模式(commandPatter

Global site tag (gtag.js) - Google Analytics