装饰者模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构
①公共的接口
public interface House { void show(); }
②需要装饰的类
public class StoneHouse implements House{ @Override public void show() { System.out.println("石头房子"); } }
③继承了公共的接口的装饰类,它是一个抽象类
public abstract class HouseDecorator implements House{ protected House decoratedHouse; public HouseDecorator(House decoratedHouse) { this.decoratedHouse = decoratedHouse; } public void show() { decoratedHouse.show(); } }
④对装饰类进行具体的实现
public class WhiteStoneHouse extends HouseDecorator { public WhiteStoneHouse(House decoratedHouse) { super(decoratedHouse); } @Override public void show() { decoratedHouse.show(); this.decorate(); } private void decorate() { System.out.println("墙壁被刷为白色"); } }
⑤测试是否装饰成功
public class MainTest { public static void main(String[] args) { House house = new StoneHouse(); house.show(); System.out.println("=============="); House decoratedHouse = new WhiteStoneHouse(house); decoratedHouse.show(); } }
示意图

其实核心是:通过装饰类的构造方法把需要装饰的对象作为形参传入,然后对方法进行增强
浙公网安备 33010602011771号