Proxy

代理模式的核心是将业务分离。代理类是将数据和操作又做了一次封装,在调用真实实现类之前或者之后再做点什么,这“做点什么”的逻辑是和纯粹“操作”不相干的。比如在Order的添加是有两部分的,一部分是应用层的List增加Item,另一部分是数据库层面的增加一条记录,这在逻辑上面是需要分开的,于是代理类负责了数据库,Order的实现类则负责应用层的添加。--案例摘自Bob大叔的书。

再比如一个队列里面装了一堆图形的对象的“索引”,在索引入队列的时候其实并不需要加载图形,只有希望处理图形的时候再加载,这个时候也是可以使用代理模式,我new一个代理对象,算是创建了一个“索引”,然后出队列后,调用该Proxy的Draw方法,此时便可以真正加载图片。--案例摘自《GoF》

这两个例子看起来有差别,但其实都在讲述一个道理:代理对数据和操作进行了再次封装,尤其是操作。所以如果对于行为/操作的直接使用有问题,可以考虑使用Proxy模式,对行为和数据进行封装。

原文地址:https://www.cnblogs.com/xiashiwendao/p/3197019.html