外觀模式的概念在上篇已經有介紹過,簡單來說他就是可以簡化使用者介面的方法,同時也有保留功能可以更改的彈性。
如果今天我想約網友回家看電影,先不論目的為何,要兼具隱私又要有娛樂性,就非得要弄一套家庭劇院。
但是家庭劇院要有音響、播放器、投影機、投影幕,喔最好再來個自製爆米花,每次光是看電影前的準備,以及電影結束善後,就可以讓我果斷去買威X的電影票。外觀模式可以把使用者跟使用介面解隅,這邊我們就嘗試用外觀模式,去簡化這些瑣碎的工作。
先大概了解 Facade有什麼屬性:
class HomeTheaterFacade{
Amplifier amp;
Tuner tuner;
DvdPlayer dvd;
CdPlayer cd;
Projector projector;
TheaterLights lights;
Screen screen;
PopcornPopper popper;
public HomeTheaterFacade(
Amplifier amp,
Tuner tuner,
DvdPlayer dvd,
CdPlayer cd,
Projector projector,
Screen screen,
TheaterLights lights,
PopcornPopper popper) {
this.amp
this.tuner = tuner;
this.dvd = dvd;
this.cd = cd;
this.projector = projector;
this.screen = screen;
this.lights = lights;
this.popper = popper;
}
}
Disclaimer
因為讀的是原文版,所以難免會有翻譯詞不達意或是專有名詞上的差異,有錯誤的話歡迎在留言區一起交流!