轉載請標明出處: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 void watchMovie()
- {
- /**
- * 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)。