Skip to content

Latest commit

 

History

History
88 lines (67 loc) · 1.63 KB

装饰模式.md

File metadata and controls

88 lines (67 loc) · 1.63 KB

装饰模式

介绍

装饰模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),结构化设计模式之一。

它使用一种对客户端透明的方式来动态地扩展对象,同时它也是继承关系地一种替代方案之一。

定义

动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活。

使用场景

需要透明且动态地扩展类地功能时。

通用代码

Component.java

/**
 * 抽象组件类
 */
public abstract class Component {

    public abstract void operate();

}

ConcreateComponent.java

/**
 * 组件具体实现类
 */
public class ConcreateComponent extends Component {
    @Override
    public void operate() {
        System.out.println("Operate!!!");
    }
}

Decorator.java

/**
 * 抽象装饰者
 */
public abstract class Decorator extends Component {

    private Component component;

    public Decorator(Component component) {
        this.component = component;
    }

    @Override
    public void operate() {
        component.operate();
    }
}

ConcreateDecoratorA.java

public class ConcreateDecoratorA extends Decorator {
    public ConcreateDecoratorA(Component component) {
        super(component);
    }

    @Override
    public void operate() {
        //装饰方法A和B既可在父类方法之前调用,也可以在之后调用
        operateA();
        super.operate();
        operateB();
    }

    public void operateA() {
        //装饰方法逻辑
    }

    public void operateB() {
        //装饰方法逻辑
    }

}