您的位置:首页 > 其它

设计模式之动态代理

2012-08-27 22:43 591 查看
接口

interface Subject{
public String say(String name,int age) ;	// 定义抽象方法say
}


真实主题类

class RealSubject implements Subject{	// 实现接口
public String say(String name,int age){
return "姓名:" + name + ",年龄:" + age ;
}
}


代理类

class MyInvocationHandler implements InvocationHandler{
private Object obj ;
public Object bind(Object obj){
this.obj = obj ;	// 真实主题类
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this) ;
}
public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{
Object temp = method.invoke(this.obj,args) ;	// 调用方法
return temp ;
}
}


测试类

public class DynaProxyDemo{
public static void main(String args[]){
Subject sub = (Subject)new MyInvocationHandler().bind(new RealSubject()) ;
String info = sub.say("tom",20) ;
System.out.println(info) ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: