设计模式之装饰者模式

指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。

在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。这些都可以釆用装饰模式来实现。

1、抽象父类

public interface Pancakes {
    void make();
}

2、具体实现

public class OriginalPancakes implements Pancakes {

    @Override
    public void make() {
        System.out.println("原味煎饼果子");
    }

}

3、抽象装饰类

public abstract class PancakesDecorator implements Pancakes {
    private Pancakes pancakes;

    public PancakesDecorator(Pancakes pancakes) {
        this.pancakes = pancakes;
    }

    @Override
    public void make() {
        pancakes.make();
    }
}

4、具体装饰类

public class Egg extends PancakesDecorator {
    public Egg(Pancakes pancakes) {
        super(pancakes);
    }

    @Override
    public void make() {
        super.make();
        System.out.println("加一个鸡蛋");
    }
}
public class HamSausage extends PancakesDecorator {
    public HamSausage(Pancakes pancakes) {
        super(pancakes);
    }

    @Override
    public void make() {
        super.make();
        System.out.println("加一片火腿");
    }
}

5、测试

public class Test {


    public static void main(String[] args) {
        Pancakes pancakes = new OriginalPancakes();
        Pancakes egg = new Egg(pancakes);
        Pancakes egg1 = new Egg(egg);
        Pancakes ham = new HamSausage(egg1);
        ham.make();
    }

}

原味煎饼果子
加一个鸡蛋
加一个鸡蛋
加火腿

 

posted @ 2020-12-14 13:21  _Gateway  阅读(77)  评论(0编辑  收藏  举报