Designmuster: Decorator-Muster Decorator

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();
    }
}

おすすめ

転載: blog.csdn.net/zhuyu19911016520/article/details/127867380