定义

Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对这个对象的访问。)代理模式也叫委托模式。

image.png

代理模式的角色:

  • Subject抽象主题角色:可以是抽象类也可以是接口,是一个普通的业务类型定义。
  • RealSubject具体主题角色:也叫做被委托角色、被代理角色。是业务逻辑的具体执行者。
  • Proxy代理主题角色:也叫做委托类、代理类。它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善后处理工作。

代理模式的应用

代理模式的优点

  • 职责清晰:真实角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,附带的结果就是编程简洁清晰。
  • 高扩展性:具体主题角色是随时都会发生变化的,只要它实现了接口,甭管它如何变化,都逃不脱接口,代理类可以不做任何修改使用。
  • 智能化:动态代理。

代理模式的扩展

普通代理就是我们要知道代理的存在,然后通过代理去访问;强制代理则是调用者直接调用真实角色,而不用关心代理是否存在,其代理的产生是由真实角色决定的。

普通代理

强制代理

动态代理