文章来源本人的博客:http://codelifeliwan.github.io/ 转载请注明出处
查看[设计模式]系列内容请点击:https://www.jianshu.com/nb/45937362
定义:(Proxy)
为其他对象提供一种代理以控制对这个对象的访问
理解:
对于一个模块(通常是类)来说一般有两部分:抽象和实现,抽象一般是接口或者抽象类,一般是完全不管实现的,实现只是实现了抽象的方法。代理提供一种机制使得外界通过代理类来控制和使用实现的方法,在代理类中可以定义外界需要的方法。
方法:
一般是通过继承同样的抽象来使得外界像通过访问具体的实现类一样访问代理类。在代理类中定义具体的实现类的对象,在代理类中调用该对象的具体方法。
当然也可以不继承相应的抽象类。
适用场合:
远程代理
·为一个位于不同的地址空间的对象提供一个局域代表对象,比如如果是要访问其他计算机上的网络资源,则可以通过代理对象来使客户端像访问本机资源一样访问网络资源。
虚拟代理
根据需要将一个资源消耗很大或者比较复杂的对象延迟到真正需要时才创建,可以在代理类中控制其创建时机。
保护代理
控制对一个对象的访问权限,在代理类中鉴别权限并分发相应操作。
智能引用代理
提供比目标对象更多的额外服务,比如记录访问流量等。可以在代理类中进行处理。
结构和代码说明:
![](https://img.haomeiwen.com/i19765360/2bfcfd3f9c809cf3.png)
网友评论