设计模式 - 代理模式
来源:互联网 发布:淘宝衣服怎么上架宝贝 编辑:程序博客网 时间:2024/06/13 21:35
概述
代理模式(Proxy Pattern)也称为委托模式。代理模式在生活中经常见,比如访问国外网站时,连上代理服务器,就可以轻松畅游全世界的网络。既然代理模式这么普遍,我们有必要了解下代理模式如何做到的?
定义
为其他对象提供一种代理以控制对这个对象的访问。
使用场景
当无法或不想访问某个对象或访问某个对象困难的时,可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象要实现相同的接口。
UML类图
角色介绍:
Subject:抽象主题类
该类的主要职责是声明真实主题与代理的共同接口方法,该类既可以是一个抽象类也可以是一个接口
RealSubject:真实主题类
该类也称为被委托活代理类,该类定义了代理所表示的真实对象,由其执行具体的业务逻辑方法,而客户端则通过代理类间接调用真实主题类的定义方法。
ProxySubject:代理类
该类也称为委托代理类,该类持有一个对真实主题类的引用,在其所实现的接口方法中调用真实主题类中相应的接口方法执行,以此起到代理作用。
Client:客户类,即使用代理类的实现。
示例代码
创建抽象主题类
public interface Subject { /** * 业务方法 */ void visit();}
创建具体主题类
public class RealSubject implements Subject { /** * 业务实现 */ public void visit() { System.out.println("Real Subject"); }
}
创建代理类
public class ProxySubject implements Subject{ // 真实主题引用对象 Subject mSubject; public ProxySubject(Subject subject) { this.mSubject = subject; } @Override public void visit() { // 通过具体主题类的引用对象调用真实主题的业务方法 mSubject.visit(); }}
创建测试类
public class Test { public static void main(String[] args) { // 构造一个真实主题对象 Subject subject = new RealSubject(); // 通过真实主题对象创建一个代理对象 ProxySubject proxySubject = new ProxySubject(subject); // 调用代理的相关业务方法 proxySubject.visit(); }}
Log打印
Real Subject
1 0
- 设计模式--【代理模式】
- 设计模式:代理模式
- 设计模式--代理模式
- 设计模式---代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 设计模式 代理模式
- 设计模式-【代理模式】
- 设计模式-代理模式
- 设计模式----代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 设计模式--代理模式
- 设计模式-代理模式
- 设计模式- 代理模式
- 设计模式---代理模式
- 设计模式 - 代理模式
- 【设计模式】代理模式
- 分布式事务介绍
- ubuntu中常用软件安装
- js中(function(){…})()立即执行函数写法理解
- 1
- 分区默认segment大小变化(64k—>8M) , 11gR2中的CELL_PARTITION_LARGE_EXTENTS 参数
- 设计模式 - 代理模式
- 【集合】——大总结
- C语言和Java的区别和相同点
- URI和URL的区别
- YYModel源代码分析(一)整体介绍
- 第一个网站
- 电路与Multisim 直流并联电路(基础)与新建结点
- ios开发 UI高级 更新Ruby
- iPhone5/5c 越狱破解联通4g