知识卡片
代理模式与装饰模式结构相同但意图不同
内容
装饰模式本质是代理模式的特殊应用——两者类图、接口结构高度相似,都是包装类持有 同接口目标对象引用。区别在职责边界:代理模式着重控制过程本身,可决定被代理对象方法 是否执行、是否变形消息,不改变功能本身,保证原汁原味调用;装饰模式无否决权,只对功能 做加强或减弱,不做准入判断。发散:判断关键看包装是”能否拦下不让执行”还是”只负责锦上 添花”;这与[[装饰角色本质是特殊化的代理]]是同一区分在不同章节的重复论证。
参考来源
- 位置:《设计模式之禅(第2版)》第31章《结构类模式大PK》31.1节(源文件:_epub-src/text/part0140.html)
- 结论依据:原文用运动员代理人(可随机拒绝安排跑步)与喷气装饰(只增强不否决)两个例子对比,总结"代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱……代理模式是把当前的行为或功能委托给其他对象执行,代理类负责接口限定:是否可以调用真实角色……它不对被主题角色的功能做任何处理,保证原汁原味的调用……装饰模式……不做准入条件判断和准入参数过滤"。
- 原始内容:装饰模式就是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,不同点则是代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱……代理模式……不对被主题角色的功能做任何处理,保证原汁原味的调用……装饰模式……但不做准入条件判断和准入参数过滤。