1. 程式人生 > 實用技巧 >裝飾器模式(結構型)

裝飾器模式(結構型)

設計模式的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