蘋果為 Apple TV 推出 tvOS 15.2 開發者預覽版 Beta3 更新
阿新 • • 發佈:2021-11-19
概念
裝飾模式使用在不改變物件原有的功能基礎上,對原有的功能進行增強。
例如:一個機器人只會掃地,我希望機器人在掃地的同時,它還能夠唱歌。這種場景就很適合裝飾模式,在不改變原有的功能基礎上,對原有的功能增強
前提:裝飾類與被裝飾類都實現相同的介面。裝飾類中有一個構造方法,構造方法中需要傳入被裝飾類。這樣裝飾類就可以使用被裝飾類的功能,也可以對被裝飾類的功能增強
實現方式
/** * 裝飾器 */ 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("我不僅會掃地,我還會唱歌"); } }
我會掃地
我不僅會掃地,我還會唱歌