Java的代理模式和回调函数
2013-09-02 16:45
239 查看
-----------------------题记:
因为在使用HibernateCallback中遇到的疑问,所以上网查了很多资料,明白原理后发现跟代理模式很像,那么它们是怎么实现的,有什么区别和相同之处呢?
-----------------------代码:
【callback demo】
【proxy demo】
-----------------------比较:
两者都是对某原型的前后进行包装装饰,区别是callback更加灵活,每次可以实现不同的方法,而proxy更加方便,每次使用同一个方法。
因为在使用HibernateCallback中遇到的疑问,所以上网查了很多资料,明白原理后发现跟代理模式很像,那么它们是怎么实现的,有什么区别和相同之处呢?
-----------------------代码:
【callback demo】
package callback; public class Test { public static void main(String[] args) { //调用method方法 new Template().method(new Callback() { //在参数列表中实现接口的方法,返回一个引用(接口不允许有构造方法,目测不是存在堆里面) public void execute(String session) { System.out.println(session); } }); } } //封装的环绕callback的类模板 class Template { //执行方法中的参数 private String mySession = "I'm session"; public void method (Callback callback) { //方法执行前 System.out.println("before"); //回调执行的方法 callback.execute(mySession); //方法执行后 System.out.println("after"); } } //接口(提供需要强制实现的方法) interface Callback { void execute(String session); }
【proxy demo】
package proxy; public class Test { public static void main(String[] args) { //引用指向原型去do it DoSomething doSomething = new Model(); //偷梁换柱,完成对原型的包装,引用指向代理 doSomething = new Proxy(doSomething); //使用代理去do it doSomething.doIt(); } } //原型 class Model implements DoSomething { @Override public void doIt() { // TODO Auto-generated method stub System.out.println("do it"); } } //代理 class Proxy implements DoSomething { private DoSomething doSomething; //测试使用构造注入更方便 public Proxy (DoSomething doSomething) { this.doSomething = doSomething; } @Override public void doIt() { // TODO Auto-generated method stub //原型do it之前 System.out.println("before"); //原型去do it doSomething.doIt(); //原型do it之后 System.out.println("after"); } } //do something interface DoSomething { void doIt(); }
-----------------------比较:
两者都是对某原型的前后进行包装装饰,区别是callback更加灵活,每次可以实现不同的方法,而proxy更加方便,每次使用同一个方法。
相关文章推荐
- java设计模式之代理模式
- JAVA设计模式之动态代理(JDK)
- java设计模式---代理模式
- Java常用的设计模式11:常用设计模式之代理模式(结构型模式)
- 设计模式(七)代理模式和java动态代理机制
- Java设计模式7-结构型-代理模式
- java设计模式之--代理模式
- Java设计模式笔记之代理模式
- 浅谈Java开发中的代理模式
- java的三种代理模式
- Java的动态代理模式
- 黑马程序员——Java的代理模式
- JAVA--代理模式(Proxy)--设计模式八
- Java 的工厂方法及代理模式
- 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理
- Java设计模式-俗谈代理模式
- 对代理模式与Java动态代理类的理解
- Java 代理模式(一) 静态代理
- Java 模式3(结构模式) - 适配器模式,缺省适配器模式,合成模式, 装饰模式,代理模式
- Java动态代理模式