题目
介绍下装饰模式
答案
装饰模式(Decorator Pattern)动态地给对象添加额外功能,而无需修改类。 适用场景: - 不想通过继承扩展类的功能。 - 需要为对象添加职责,但不影响其他对象。 示例:饮料加配料 ```java // 抽象组件 interface Drink { String getDescription(); double cost(); } // 具体组件 class Coffee implements Drink { public String getDescription() { return "Coffee"; } public double cost() { return 5.0; } } // 装饰器 abstract class DrinkDecorator implements Drink { protected Drink drink; public DrinkDecorator(Drink drink) { this.drink = drink; } } // 具体装饰器 class Milk extends DrinkDecorator { public Milk(Drink drink) { super(drink); } // 添加功能 public String getDescription() { return drink.getDescription() + " + Milk"; } // 添加功能 public double cost() { return drink.cost() + 1.5; } } // 测试 public class DecoratorTest { public static void main(String[] args) { Drink drink = new Coffee(); drink = new Milk(drink); System.out.println(drink.getDescription() + " $" + drink.cost()); } } ```