Proxy代理模式hosts代理模式
>>返回《C#常用设计模式》
- 1. 简介
- 2. 示例
定义
- 代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。
意图
- 提供其他对象一个代理或占位符,来控制该对象的访问权限。
动机
- 由于一些对象创建和实例化需要占用大量系统资源,但我们并不能确定用户一定会调用该对象,所以通过延迟对象实例化来减缓系统资源的消耗。
- 通过控制来延迟对象的创建和实例化,直到真正需要使用该对象才进行创建和实例化。
经典实例
常见的代理模式设计
- 为某一个目标操作的结果提供临时的存储空间,以便多个程序调用可以共享这些结果,如:Abp中DbContext对象使用上的设计。
- 控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。
- 当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等
- 虚拟代理的一种。把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。(StringBuilder、EF中的Entity代理)
- 根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。
- 代理可以对加载的过程加以必要的优化,达到节省资源的最用
- 为一个位于不同的地址空间的对象提供一个局域代表对象。
- 好处是系统可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。
- 远程代理
- 虚拟代理
- Copy-on-Write代理
- 智能引用(Smart Reference)代理
- 保护代理(Protect Proxy)
- 缓冲代理(Cache Proxy)
类图
- 以智能引用代理为例