转自:大话设计模式.

本文例子是以小菜要出去约会,在考虑穿什么衣服为延伸。

装饰模式:动态给一个类增加额外的只能,就增加功能来说,比生成子类更加灵活。

如果只有一个ConcreteComponet类,那么可以直接让Decorator继承ConcreteComponet类。 如果只有一个Decorator 那么可以直接让ConcreteComponet 和Decorator 做一个 合并。

那么对于此例中,最后的结果是:

Person:代表将要实例化的人

 

//Finery: 装饰类  继承person(案例中只有一个人),

具体的装饰行为:

 //最终测试:

测试结果:

 

书面解释:

把类中的装饰功能从类中移除,可以简化原有的类。有效的把类的核心职责和装饰功能分开(比如未分开前、可以在person里面写很多方法,一个一个的调用,重复,不易于维护。)可以去除勒种的重复的逻辑。

 

个人理解:

 把类和需要装饰的类进行分开,根据个人的需求一步一步的组装所需要的装饰。每一个具体的装饰类可以单独分开,要使用的时候拿来就可以用。 抛弃了在原有类中修改代码的复杂性,用新的类包装原有的类,在有需要的时候,使用这个新的包装类就可以达到装饰效果