iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
自我挑戰組

深入淺出設計模式 (Head First Design Pattern) - 重點整理及範例分享系列 第 28

[深入淺出設計模式] Ch7 The Adapter Pattern (5) - 【外觀模式】範例 Home Sweet Home Theater 家庭劇院 (已更新)

  • 分享至 

  • xImage
  •  

範例 Home Sweet Home Theater 家庭劇院

延續上篇,接著來完成方法 watchMovie(),執行看電影的動作

public void watchMovie(String movie){
        System.out.println("Setting up for a movie");
        popper.on();
        popper.pop();
        lights.on();
        lights.dim(20);
        screen.down();
        projector.on();
        projector.wideScreenMode();
        amp.on();
        amp.setVolume(41);
        dvd.on();
        dvd.play(movie);
    }
}

對使用者來說,他只要切換到「看電影」watchMovie()模式,不需要理會裡面的運作。

public class HomeTheaterTestMode {
    public static void main(String[] args) {
        Amplifier amp = new Amplifier();
        DvdPlayer dvdPlayer = new DvdPlayer();
        Projector projector = new Projector();
        Screen screen = new Screen();
        TheaterLights lights = new TheaterLights();
        PopcornPopper popper = new PopcornPopper();
        HomeTheaterFacade myTheater = new HomeTheaterFacade(amp, dvdPlayer,projector,           screen, lights, popper);
        
        // 使用者只要負責輸入片名
        myTheater.watchMovie("Fast and Furious");
    }
}

輸出可以看到所有物件呼叫的方法

https://ithelp.ithome.com.tw/upload/images/20231014/20163178DrVg1vO6WE.png___

本篇完整程式碼

https://github.com/changtintin/Design-Pattern/tree/7f1a90c143945f3e6634e98fad92885a947664c5/Ch7/Java


參考資料:

  1. 《深入淺出設計模式 (Head First Design Patterns) 》
  2. 書中官方程式碼傳送門

Disclaimer
因為讀的是原文版,所以難免會有翻譯詞不達意或是專有名詞上的差異,有錯誤的話歡迎在留言區一起交流!


上一篇
[深入淺出設計模式] Ch7 The Adapter Pattern (4) - 【外觀模式】範例 Home Sweet Home Theater 家庭劇院
下一篇
[深入淺出設計模式] Ch7 The Adapter Pattern (6) - 【迪米特法則】The Principle of Least Knowledge
系列文
深入淺出設計模式 (Head First Design Pattern) - 重點整理及範例分享35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言