外觀模式 一鍵電影模式
阿新 • • 發佈:2020-08-28
轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/25837275
這個模式比較簡單,嘿嘿,簡單寫一下。
老樣子,先看外觀模式(Facade Pattern)定義:提供一個統一的介面,用來訪問子系統中的一群介面,外觀定義了一個高層的介面,讓子系統更容易使用。其實就是為了方便客戶的使用,把一群操作,封裝成一個方法。
舉個例子:我比較喜歡看電影,於是買了投影儀、電腦、音響、設計了房間的燈光、買了爆米花機,然後我想看電影的時候,我需要:
1、開啟爆米花機
2、製作爆米花
3、將燈光調暗
4、開啟投影儀
5、放下投影儀投影區
6、開啟電腦
7、開啟播放器
8、將播放器音調設為環繞立體聲
...
尼瑪,花了一筆錢,看電影還要這麼多的步驟,太累了,而且看完還要一個一個關掉。
所有,我們使用外觀模式解決這些複雜的步驟,輕鬆享受電影:
package com.zhy.pattern.facade; public class HomeTheaterFacade { private Computer computer; private Player player; private Light light; private Projector projector; private PopcornPopper popper;public HomeTheaterFacade(Computer computer, Player player, Light light, Projector projector, PopcornPopper popper) { this.computer = computer; this.player = player; this.light = light; this.projector = projector; this.popper = popper; } public voidwatchMovie() { /** * 1、開啟爆米花機 2、製作爆米花 3、將燈光調暗 4、開啟投影儀 5、放下投影儀投影區 6、開啟電腦 7、開啟播放器 8、將播放器音調設為環繞立體聲 */ popper.on(); popper.makePopcorn(); light.down(); projector.on(); projector.open(); computer.on(); player.on(); player.make3DListener(); } public void stopMovie() { popper.off(); popper.stopMakePopcorn(); light.up(); projector.close(); projector.off(); player.off(); computer.off(); } }
可以看到,我們定義了一個類,然後可以讓我一鍵享受看電影了,看完,一鍵關閉,享受多了。
外觀模式:一般用於需要簡化一個很大的介面,或者一群複雜的介面的時候。
這個模式比較容易理解,就不多說了,最後附上類圖:
好了,恭喜你,你又學會了一個設計模式,外觀模式(Facade Pattern)。