-java 动态代理设计模式
来源:互联网 发布:法院书记员打字软件 编辑:程序博客网 时间:2024/05/01 13:22
今天学习java 动态代理设计模式,虽然学习的有点模糊,
java 中,当我们有时候需要给已经写好的方法增加相应的功能的时候,没错,我们可以用继承来实现,不过继承也是有缺点的,继承只能导致所写的方法越来越多。并不能很好的起到效果。所以我们引入了代理。
代理,我们平时生活中也见到许多,我们平时上网也经常使用代理。
Java中代理可以用聚合,继承,动态代理实现代理。
//以下是聚合方式实现代理。
public class Tank
{
public void move()
{
System.out.prinltn("Moveing....");
//
}
}
// 这是聚合的方式实现代理
public class Tank3 extends Tank
{
Tank t;
public Tank3(Tank t)
{
this.t=t;
}
public void move()
{
System.out.println("start moveing");
t.move();//调用
System.out.println("Stop move");
}
}
java动态代理类位于Java.lang.reflect包下
Proxy, 该类即为动态代理类....InvocationHandler该接口中仅定义了一个方法Object:invoke(Object obj,Method method, Object[] args)。在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法, 这个抽象方法在代理类中动态实现。
import java.lang.reflect.InvocationHandler ;
import java.lang.reflect.Proxy ;
import java.lang.reflect.Method ;
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("Hello",30) ;
System.out.println(info) ;
}
};
- -java 动态代理设计模式
- java动态代理设计模式
- java 设计模式 动态代理
- java设计模式--动态代理
- java模式设计- 动态代理
- java设计模式-代理模式(静态代理,动态代理)
- Java设计模式-----Proxy模式(动态代理)
- Java设计模式-----Proxy模式(动态代理)
- JAVA设计模式--动态代理模式
- java设计模式—动态代理模式
- java设计模式之动态代理模式!
- java设计模式:动态代理模式 Proxy
- java设计模式之代理模式,java动态代理
- java设计模式之代理模式,java动态代理
- java代理设计模式(静态代理与动态代理)
- java设计模式学习笔记4 代理模式-动态代理
- 设计模式中的代理模式与Java中的动态代理
- 设计模式(十三) 代理模式和Java动态代理
- 开发平台的进化理论
- linux下搜索字符串 grep
- 3.android opengl glViewport()
- Debian下安装DNS服务器
- 如鹏网
- -java 动态代理设计模式
- ASP.NET 调试时的命令行输出呢?
- Jquery+CSS打造的泡沫弹出框式的侧边蓝色导航菜单
- C++ 学习笔记3
- C++ 学习笔记4
- HGE:Tutorials:Particle Effects
- Hibernate的LockMode
- 将Excel文件数据库导入SQL Server的三种方案
- flex 各种资源