定义:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式生成子类更加灵活。
使用场景:需要透明且动态地扩展类的功能时。
装饰模式的UML类图:我用亿图软件画的一个:

下面看一下装饰模式的通用模式代码:
抽象组件类:

组件具体实现类:

抽象装饰类:

装饰者具体实现类:

角色介绍:
Component:抽象组件。可以是一个接口或抽象类,其充当的就是被装饰的原始对象。
ConcreteComponet:组件具体实现类:该类是Component类的基本实现,也是我们装饰的具体对象。
Decorator:抽象装饰者。
其担当的职责就是为了装饰我们的组件对象,其内部一定要有一个指向组件对象的引用。在大多数情况下,该类为抽象类,需要根据不同的装饰逻辑实现不同的具体子类。
ConcreteDecortorA:
装饰者具体实现类:
对抽象装饰者的具体实现。
网友评论