代理模式和装饰器模式都持有RealObject(被代理的对象/被装饰的对象)
代理模式用于控制访问,即原本功能的执行与否取决于场景条件,对用户而言重要的是原本的功能
装饰器模式用于动态地添加职责,原本的功能必须执行,对用户而言重要的是添加的职责
桥接模式用于抽象和实现的分离,即从不同维度划分类的属性,以聚合的方式桥接,降低耦合。
与装饰器的区别在于装饰器是对 对象行为的扩展,对需求变化的适应,桥接是对 对象属性不同维度的抽象分离,对属性变化的适应。
e.g.装饰:牛奶可以加糖,加咖啡,等等;
CandyMilk(Milk)
桥接:饮料(牛奶,),添加剂(配方:糖:90%,辣椒:10%)
Milk.setAddition(new Addition(...));
摘自:http://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/decorator.html
代理模式适用场景
- 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不 同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又叫做大使(Ambassador)。 e.g.RPC和CORBA pr