Java 静态代理模式
来源:互联网 发布:绝地求生画面优化软件 编辑:程序博客网 时间:2024/06/16 02:01
代理模式
为其他对象提供一种代理以控制对这个对象的访问。
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,
代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,
一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
使用场景:
- 远程代理(Remote Proxy):为一个对象在不同的地址空间提供局部代理。
- 虚代理(Virtual Proxy):根据需要创建开销很大的对象。
- 保护代理(Protection Proxy):控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。
- 智能指引(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作。
代理分为静态代理和动态代理,下面先以静态代理为例.
UML类图
定义代理类的规范,被代理类和代理类需实现此规范
/** * Created by yangtianrui on 16-7-25. * <p> * 通过接口定义一个被代理类的规范 */interface Subject { void request(); // do something... Subject getProxy(); // 获取自身代理的对象}
实际的一个被代理类
/** * Created by yangtianrui on 16-7-25. * 被代理类 */public class RealSubject implements Subject { @Override public void request() { System.out.println("RealSubject ---> request() "); } @Override public Subject getProxy() { return null; // 没有代理任何对象 }}
代理类代理
/** * Created by yangtianrui on 16-7-25. * 代理类 */public class Proxy implements Subject { private Subject mSubject; // 被代理类 /** * 必须传递被代理的对象 */ public Proxy(Subject subject) { this.mSubject = subject; } @Override public void request() { // 让代理类去执行 mSubject.request(); } @Override public Subject getProxy() { return mSubject; }}
main函数
public static void main(String[] args) { // 代理一个RealSubject对象 Proxy proxy = new Proxy(new RealSubject()); proxy.request(); // 实际上时RealSubject对象的request()执行 // 输出:RealSubject ---> request() }
源码下载:
https://github.com/yangtianrui95/Java–Design_Pattern
定时更新设计模式
0 0
- java代理模式---静态代理
- JAVA代理模式--静态代理
- Java代理模式-静态代理
- Java 静态代理模式
- JAVA静态代理模式
- Java代理模式 静态代理 动态代理
- Java 模式 之 静态代理
- java静态代理模式Demo
- Java设计模式---静态代理
- java设计模式----静态代理
- java 代理模式之 静态代理
- java代理模式-静态代理学习
- Java 代理模式(一) 静态代理
- java 代理模式详解之静态代理
- Java代理模式(静态代理)
- Java代理模式 静态代理,动态代理,Cglib代理
- java设计模式-代理模式(静态代理,动态代理)
- Java设计模式-----Proxy模式(静态代理)
- 字符处理题poj1298-The Hardest Problem Ever
- Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
- 软件测试一年有感
- Java 执行全流程略讲
- 支付宝支付与微信支付的集成
- Java 静态代理模式
- 1-4-1浮动代码实例
- 算法学习(二):动态规划(DP)(1)
- 有趣的C语言--缓冲区
- Linux下串口编程入门
- AVL树的简单实现
- C#学习之路-线程(二)
- int类型转换为string类型的两种方法
- WinForm ListView不分页加载大量数据