装饰类和被装饰类可以独立发展,而不会相互耦合。换句话说, Component 类无须知道 Decorator 类, Decorator 类是从外部来扩展 Component 类的功能,而 Decorator 也不用知道具体的构件。
3.3 缺点对于装饰模式记住一点就足够了:多层的装饰是比较复杂的。为什么会复杂呢?想想看,就像剥洋葱一样,至于剥到了最后才发现是最里层的装饰出现了问题,想象一下工作量吧,因此,尽量减少装饰类的数量,以便降低系统的复杂度。
3.3 使用场景需要扩展一个类的功能,或给一个类增加附加功能。
需要动态地给一个对象增加功能,这些功能可以再动态地撤销。
需要为一批的兄弟类进行改装或加装功能,当然是首选装饰模式。