设计模式:装饰器模式Decorator

装饰器模式

  • 1.优点:独立扩展,不耦合
  • 2.缺点:多层装饰比较复杂

Java JDK中 FileInputStream 的 BufferedInputStream 就是装饰器,扩展了 FileInputStream 类的功能,增加了流缓冲区,加快了传输速度和效率

public interface IDrink {
    void eat();
}
public class Milk implements IDrink {
    @Override
    public void eat() {
        log.info("喝牛奶");
    }
}

public class XueBi implements IDrink {
    @Override
    public void eat() {
        log.info("喝雪碧");
    }
}

装饰器类,扩展原类的功能

public class DrinkDecorator {
  
  private IDrink drink;
  
  public EatDecorator(IDrink drink){
	this.drink = drink;
  }

  public void eat() {
    drink.eat();
	//扩展功能
	cake();
  }
  
  public void cake(){
    System.out.println("吃蛋糕");
  }
}

测试类

public class TestMain {
    public static void main(String[] args) {
        // 喝牛奶-吃蛋糕
        DrinkDecorator milk = new DrinkDecorator(new Milk());
        milk.eat();
		
        System.out.println();
		
        // 喝雪碧-吃蛋糕
        DrinkDecorator xuebi = new DrinkDecorator(new XueBi());
        xuebi.eat();
    }
}

猜你喜欢

转载自blog.csdn.net/zhuyu19911016520/article/details/127867380