目的 由于继承方式是静态的,使用传统的继承方式扩展一个类的功能,会因为扩展功能增加,增加不少子类。如果使用组合关系创建装饰对象,可以不改变真实对象的类结构,又增加了动态额外的功能
应用场景 动态增加、撤销对象功能
构成 抽象挂件、具体构件、抽象装饰、具体装饰
备注 现实中往往,一些产品只完成了核心功能,需要增加一些新功能或者美化功能。比如进行房屋装修、新增QQ皮肤等。这种情况使用装饰模式比合适。

 

 

 

 

 

装饰模式由抽象挂件、具体挂件、抽象装饰、具体装饰等组成。

(1)抽象构件:定义一个抽象接口,为对象动态添加职责。

(2)具体构件:定义一个对象,并为装饰对象添加一些功能。

(3)抽象装饰:继承抽象构件,定义了继承抽象构件一致的接口,包括具体构件的实例。

(4)具体装饰:实现抽象装饰的方法,并给具体构件对象添加附加的功能