设计模式——代理模式

空扰寡人 提交于 2020-03-14 05:13:59

一、概念:代理模式为其他对象提供一种代理以控制对这个对象的访问。(在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。)

二、UML示意图:

 

Subject类是一个抽象类,里面有抽象方法Operation(),RealSubject继承Subject类并实现Operation()方法,但有时候程序员可能会想要调用这个Operation()之前做一些权限控制,或者说预处理,这时候可以用同样继承于Subject类的Proxy类,Proxy对象内部会有一个RealSubject对象,当调用Operation()方法时Proxy对象会调用这个RealSubject对象的Operation()方法,并在调用它之前或者之后做一些程序员想要做的额外任务。 

三、优缺点

优点:

  • 职责清晰。真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。降低了耦合度。
  • 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。
  • Client可以针对Subject类进行编程,无需关心用了哪个Proxy类或者是RealSubject类,当需要增加新的Proxy类或者更换另一个Proxy类时,无需更改原代码,符合开闭原则。

缺点:

  • 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢,例如保护代理。
  • 实现代理模式需要额外的工作,而且有些代理模式的实现过程较为复杂,例如远程代理。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!