1. 程式人生 > 資訊 >蘋果為 Apple TV 推出 tvOS 15.2 開發者預覽版 Beta3 更新

蘋果為 Apple TV 推出 tvOS 15.2 開發者預覽版 Beta3 更新

概念

裝飾模式使用在不改變物件原有的功能基礎上,對原有的功能進行增強。

例如:一個機器人只會掃地,我希望機器人在掃地的同時,它還能夠唱歌。這種場景就很適合裝飾模式,在不改變原有的功能基礎上,對原有的功能增強

前提:裝飾類與被裝飾類都實現相同的介面。裝飾類中有一個構造方法,構造方法中需要傳入被裝飾類。這樣裝飾類就可以使用被裝飾類的功能,也可以對被裝飾類的功能增強

實現方式

/**
 * 裝飾器
 */
public class Demo {
    public static void main(String[] args) {
        Robot robotImpl = new RobotImpl();
        RobotDecorator robotDecorator = new RobotDecorator(robotImpl);
        robotDecorator.sweepSuper();
    }
}

// 機器人共同的介面
interface Robot {
    public void sweep();
}

// 具體的機器人(被裝飾類)
class RobotImpl implements Robot {
    public void sweep() {
        System.out.println("我會掃地");
    }
}

// 裝飾類,需要和被裝飾類實現共同介面,需要具有被裝飾類的所有功能
class RobotDecorator implements Robot {
    Robot robot;

    public RobotDecorator(Robot robot) {
        this.robot = robot;
    }

    public void sweep() {
        robot.sweep();
    }

    public void sweepSuper() {
        sweep();
        System.out.println("我不僅會掃地,我還會唱歌");
    }
}

我會掃地
我不僅會掃地,我還會唱歌