首页 > 其他 > 详细

设计模式之装饰者模式

时间:2020-12-14 14:40:16      阅读:29      评论:0      收藏:0      [点我收藏+]

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

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

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();
    }

}

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

 

设计模式之装饰者模式

原文:https://www.cnblogs.com/lyy12332133/p/14132736.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!