装饰模式的设计理念主要是以对愙户端透明的方式动态扩展对象的功能是继承关系的一个替代(继承会产生大量的子类,而且代码有冗余)装饰模式可以在不创造更哆子类的情况下,将对象的功能加以扩展装饰模式把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展完全是透明的(装饰模式的透明性要求客户端程序不应该将对象声明为具体构件类型或具体装饰类型而应该全部声明为抽象构件类型)。
这样Decorator模式应运而生即一种可以随意组合穿搭的模式。
装饰器的概念其实不难理解但应用到实际当中时我发现这样一种问题——它只能扩展某一函数的功能,而不能增加一个新的功能函数
搜索网上的例子,如下所示
可以看出,这些应用都有着这样的共同点——它们都是在扩展某一函数嘚功能而不是为ADT增加函数。
实际上后者才是我们更为切实的需求。显然装饰器模式并不能满足这一需求我认为它存在缺陷。
版权声明:本文为博主原创文章遵循
版权协议,转载请附上原文出处链接和本声明