Dekorationsmuster
- 1. Vorteile: unabhängige Erweiterung, keine Kopplung
- 2. Nachteile: Mehrschichtige Dekoration ist komplizierter
BufferedInputStream von FileInputStream im Java JDK ist ein Dekorator, der die Funktionen der FileInputStream-Klasse erweitert, einen Stream-Puffer hinzufügt und die Übertragungsgeschwindigkeit und -effizienz beschleunigt.
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("喝雪碧");
}
}
Decorator-Klasse, die die Funktionalität der ursprünglichen Klasse erweitert
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("吃蛋糕");
}
}
Testklasse
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();
}
}