结构型模式01-代理模式(为其他对象提供一种代理以控制这个对象的访问)
来源:互联网 发布:影响力的重要性知乎 编辑:程序博客网 时间:2024/05/20 19:45
代理模式是比较常见的一种设计模式。通过代理模式,我们可以很方便通过代理对象来访问真正对象的方法。
代理模式,体现的是一种对象访问的控制。我们可以原封不动的调用被代理对象的方法,也可以在调用前后增加增强片段(advice),实现额外的特定操作,比如记日志,事务管理等。先来看下代理模式通用图(来源:设计模式之禅):
依据图,写了段简单的示例代码:
/** * Create by zxb on 2017/4/23 */interface Subject { void request();}class RealSubject implements Subject { @Override public void request() { System.out.println("RealSubject do something!"); }}class Proxy implements Subject { private Subject subject; public Proxy(Subject subject) { this.subject = subject; } @Override public void request() { subject.request(); }}public class ProxyExample { public static void main(String[] args) { RealSubject realSubject = new RealSubject(); Proxy proxy = new Proxy(realSubject); proxy.request(); }}
执行结果:
可以看到虽然是运行代理类的request方法,但是执行的实际是真实对象。
在Java中根据代理类产生方式不同,可以分为静态代理和动态代理。静态代理,就是在程序运行前,代理关系已经通过代码的方式明确。动态代理则是在运行期间生成代理类。上面的示例代码,可以认为是静态代理,因为程序运行前,代理类已经存在并且定义好了。
常见的动态代理,分为JDK 动态代理 和 CGLib 动态代理 两种。
关于JDK 动态代理实现及原理解析,请参考博文:JDK 动态代理实现及原理解析
关于CGLib 动态代理的介绍及用法,请参考博文:CGLib动态代理的介绍及用法(单回调、多回调、不处理、固定值、懒加载)
0 0
- 结构型模式01-代理模式(为其他对象提供一种代理以控制这个对象的访问)
- 控制对象访问--代理模式
- 代理模式(控制对象访问)
- 代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引用.
- 设计技巧27:代理 Proxy 为另外一个对象提供替身或者站位符以控制对对象的访问
- 代理模式(Proxy Pattern)——控制对象访问
- 代理模式(Proxy)-对象结构型模式
- 代理模式-对象结构型模式
- Proxy 代理模式 对象结构型模式
- 设计模式之代理(Proxy)----对象结构型模式
- Proxy 代理对象结构模式
- javascript 对象结构 代理模式
- 对象结构型——代理模式(Proxy)
- 2.7 Proxy(代理) -- 对象结构型模式
- 代理模式 -- 通过代理对象间接访问对象
- 代理模式——对象结构型模式
- C#面向对象设计模式纵横谈 学习笔记13 Proxy代理模式(结构型模式)
- [c++]代理对象模式
- 对象的共享
- VMWare9安装Centos6.5
- c语言(杨辉三角形)2017.4.23
- 原生态jdbc程序中问题总结
- 设计模式之策略模式
- 结构型模式01-代理模式(为其他对象提供一种代理以控制这个对象的访问)
- pip 升级的问题解决办法
- Android中Handler的sendEmptyMessage的理解
- 1040. Longest Symmetric String (25)
- TabLayout + ViewPager 的滑动页面
- HDU 2089
- 如何修改jar包中的class文件
- android 性能优化
- ORA-16661: the standby database needs to be reinstated