作用:在不修改对象外观和功能的情况下添加或者删除对象功能,即给一个对象动态附加职能
装饰器模式主要包含以下角色。
- package decorator;
- public class DecoratorPattern {
- public static void main(String[] args) {
- Component p = new ConcreteComponent();
- p.operation();
- System.out.println("---------------------------------");
- Component d = new ConcreteDecorator(p);
- d.operation();
- }
- }
- //抽象构件角色
- interface Component {
- public void operation();
- }
- //具体构件角色
- class ConcreteComponent implements Component {
- public ConcreteComponent() {
- System.out.println("创建具体构件角色");
- }
- public void operation() {
- System.out.println("调用具体构件角色的方法operation()");
- }
- }
- //抽象装饰角色
- class Decorator implements Component {
- private Component component;
- public Decorator(Component component) {
- this.component = component;
- }
- public void operation() {
- component.operation();
- }
- }
- //具体装饰角色
- class ConcreteDecorator extends Decorator {
- public ConcreteDecorator(Component component) {
- super(component);
- }
- public void operation() {
- super.operation();
- addedFunction();
- }
- public void addedFunction() {
- System.out.println("为具体构件角色增加额外的功能addedFunction()");
- }
- }
运行结果
- 创建具体构件角色
- 调用具体构件角色的方法operation()
- ---------------------------------
- 调用具体构件角色的方法operation()
- 为具体构件角色增加额外的功能addedFunction()