1. 程式人生 > >23種設計模式---10.裝飾器模式

23種設計模式---10.裝飾器模式

裝飾器模式(Decorator Pattern)允許向一個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的一個包裝。

這種模式建立了一個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。

1.抽象出介面

public interface Car {
    void run();
}

2.原有類實現該介面,方法體不變

public class SmallCar implements Car {
    @Override
    public void run() {
        System.out.println("too small to money");
    }
}

3.抽象出一個類實現介面

public abstract class AbstractCar implements Car {
    public Car car;
    public AbstractCar(Car car) {
        this.car = car;
    }
    @Override
    public void run() {
       car.run();
    }
}

4.具體裝飾類

public class BigCar extends AbstractCar {
    public BigCar(Car car) {
        super(car);
    }
    @Override
    public void run() {
        System.out.println("buff加成");
        car.run();
    }
}

在不改變原有類的情況下新增功能,AOP般的功能