1.代理模式就是将一个类进行进一步的封装,然后提供相同的接口(它与适配器的区别在于适配器提供的是不同的接口)。举例说明:如何使叫外卖跟在店里点餐一样方便,我们知道送外卖的话需要打包,送货等细节,但是我们把这些细节封装起来,全部由代理去完成,这样对于客户来说,想叫外卖的时候,只用通过代理类来调用一个order接口就OK
2.代理模式主要有四种应用场合:
(1)远程代理:比如上面那个例子
(2)虚代理:比如用米聊发送接收图片时,传过来的就是一个虚代理,需要用户点下载来触发GetImage,很多网页中也采用了类似的技术,以免图片太大,影响网页整体传输速度。
(3)保护代理:通过代理来对被保护对象实行访问控制。比如可以通过代理类来识别不同权限的用户,在用户进行权限之外的访问,不提供相应的接口并给出一些错误警告
(4)智能指引:在访问对象时执行一些附加操作,以实现对访问对象的资源管理。比如说智能指针auto_ptr
3.总而言之,就是通过对对象的进一步封装,以满足一些特殊的用户需要,对对象资源进行更好的管理。
4.外卖模式这个名字很木有创意,只能让我想到肯德基和麦当劳,还是米聊的例子印象更深刻一些
类图摘自设计模式迷你手册,这个东西言简意赅,推荐一下