设计模式之装饰者模式
指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。
在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。这些都可以釆用装饰模式来实现。
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(); } }
原味煎饼果子
加一个鸡蛋
加一个鸡蛋
加火腿