结构

 

Aha!设计模式(70)-代理模式(4)

 

参与者

 

括号中列举的是前一篇文章中保护代理实例中的对应类。
• Proxy (AccessorProxy )
—管理一个引用使得代理可以访问实体。结果类图中的Proxy管理的是RealSubject类型的对象,如果可能的话Proxy可以管理Subject类型的对象,这时Proxy可以具备更好的通用性。
—提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。也就是说从客户看起来没有发生任何变化。
— 根据需求,提供额外的操作以实现客户的需求。
• Subject ( DbAccessor )
—定义RealSubject和Proxy的共用接口,这样就在任何使用RealSubjec t的地方都可以使用Proxy。站在用户立场,无论是RealSubject还是Proxy,都是一样的。
• RealSubject (RealAccessor)
—Proxy所代表的实体。

 

在实际的开发中,有可能最先存在的是具体实现功能的Subject。当发生另外的需求(节约内存,保护访问等)时,可以将Subjec的功能转移到新类RealSubject中,而Subject本身变成一个抽象类。接下来按照Subject的接口定义Proxy并交给用户使用。这可以看作是重构的一个实例。

 

 

 

 协作

 

• 代理根据其职责,在适当的时机和方式向代理对象转发请求。

 

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

Aha!设计模式(70)-代理模式(4)

相关文章:

  • 2022-01-07
  • 2021-10-01
  • 2021-06-17
  • 2021-05-01
  • 2021-05-21
  • 2021-05-14
  • 2021-11-19
  • 2021-06-27
猜你喜欢
  • 2021-04-05
  • 2021-09-12
  • 2021-11-25
  • 2021-08-26
  • 2021-04-27
  • 2021-08-27
  • 2021-12-02
相关资源
相似解决方案