Decorator主要目的是为类增加新的功能。
那么,为什么不用继承呢?
原因是一,如果要增加的功能比较多,则继承会生成很多的子类。
二,使用继承,则新的功能是在编译器就决定了的。而更多的时刻我们更愿意在运行期时指定新的功能。即由用户动态指定。
Decorator看起来和Composite很像。但是,很明显,Composite模式更强调的是层次关系,即Panel与Component的关系。
参考:
Decorator主要目的是为类增加新的功能。
那么,为什么不用继承呢?
原因是一,如果要增加的功能比较多,则继承会生成很多的子类。
二,使用继承,则新的功能是在编译器就决定了的。而更多的时刻我们更愿意在运行期时指定新的功能。即由用户动态指定。
Decorator看起来和Composite很像。但是,很明显,Composite模式更强调的是层次关系,即Panel与Component的关系。
参考: