《设计模式 系列》- 结构型模式 - 代理模式
2018-01-04 00:00
302 查看
模板定义
给对象提供一个代理,并由代理对象控制对原对象的引用模板结构
Subject:抽象角色。代理角色、真实角色的公共父接口。ProxySubject:代理角色。依赖与真实角色
RealSubject:真实角色。我们要扩展功能的类
UML图
代码实现
Subject.javapublic interface Subject { void request(); }
RealSubject.java
public class RealSubject implements Subject { @Override public void request() { System.out.println("RealSubject do SomeThing"); } }
ProxySubject.java
public class ProxySubject implements Subject { private RealSubject realSubject = new RealSubject(); @Override public void request() { System.out.println("Before request"); realSubject.request(); System.out.println("After request"); } }
Client.java
public class Client { public static void main(String[] args) { Subject subject = new ProxySubject(); subject.request(); } }
模式优点
协调调用者和被调用者,在一定程度上降低系统的耦合度。远程代理使得客户端可以访问在远程机器上的对象。
保护代理可以控制对真实对象的使用权限
模式缺点
由于在客户端和真实主题之间增加了代理对象,因此 有些类型的代理模式可能会造成请求的处理速度变慢。实现代理模式需要额外的工作,有些代理模式的实现 非常复杂。
参考资料
http://hjxandhmr.github.io/2016/06/06/DesignPattern-Proxy/相关文章推荐
- 设计模式(八)代理模式(Proxy)-结构型
- 设计模式系列-代理模式
- 《设计模式 系列》- 结构型模式 - 适配器模式
- 设计模式第八课 代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 《设计模式 系列》- 结构型模式 - 外观模式
- 《设计模式 系列》- 结构型模式 - 装饰者模式
- 设计模式系列之十三代理模式
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式系列之三_代理模式(Proxy)
- 设计模式实现系列-策略模式-装饰模式-代理模式
- C#面向对象设计模式纵横谈 学习笔记13 Proxy代理模式(结构型模式)
- 设计模式(12)-结构型-代理模式(Proxy)
- 设计模式(十一)代理模式Proxy(结构型)
- 十五.结构型设计模式——Proxy Pattern(代理模式)
- 设计模式系列——策略模式
- 设计模式(六)桥连模式Bridge(结构型)
- 极速理解设计模式系列:3.代理模式(Proxy Pattern)
- 结构型模式 代理模式
- 设计模式(十一)代理模式Proxy(结构型)