裝飾器模式(結構型)
阿新 • • 發佈:2020-11-23
設計模式的3個分類:建立型模式、結構型模式、行為型模式
裝飾器模式定義:
裝飾器模式又稱為包裝(Wrapper)模式。裝飾器模式主要對現有的類物件進行包裹和封裝,以期望在不改變類物件及其類定義的情況下,為物件新增額外功能。
裝飾器模式廣泛應用在JavaIO相關的類中。
裝飾器模式圖示:
裝飾器模式應用在不想增加很多子類的情況下擴充套件類,動態地給一個物件新增一些額外的職責。就增加功能來說,裝飾器模式相比生成子類更為靈活。
程式碼實現:
//Component public interface Car { void assemble(); } //ConcreteComponent public class BasicCar implements Car{ @Override public void assemble() { System.out.print("Basic Car."); } } //Decorator public abstract class CarDecorator implements Car { protected Car car; public CarDecorator(Car car) { this.car = car; } @Override public void assemble() { this.car.assemble(); } } //ConcreteDecoratorA public class SportsCar extends CarDecorator{ public SportsCar(Car car) { super(car); } @Override public void assemble() { super.assemble(); System.out.print(" Adding features of Sports Car."); } } //ConcreteDecoratorB public class LuxuryCar extends CarDecorator{ public LuxuryCar(Car car) { super(car); } @Override public void assemble() { super.assemble(); System.out.print(" Adding features of LuxuryCar Car."); } } //Test public class DecoratorPatternTest { public static void main(String[] args) { Car sportsCar = new SportsCar(new BasicCar()); sportsCar.assemble(); System.out.println("\n***************"); Car sportsLuxuryCar = new SportsCar(new LuxuryCar(new BasicCar())); sportsLuxuryCar.assemble(); } } 附:https://www.journaldev.com/1540/decorator-design-pattern-in-java-example
--End