)講的是如何將乙個介面轉換成客戶所需要的另乙個接
口,它的目的在於
解決介面的不相容性問題。現在這裡有這樣乙個模式,它的目的在於如何簡化介面,它可以將多個
類的複雜的一切隱藏在背後,只顯露
出乙個乾淨美觀的外觀。
晚上睡覺之前,你總是喜歡看電視,在你進入臥室的時候你需要完成以下幾個步驟:開啟電燈、開啟空調、放
心銀幕(假如你家
有)、開啟電視通過這麼些繁瑣的步驟後你終於可以看電視了,但是你要睡覺了呢?又要去進行繁瑣
的關閉動作。這裡你就需要乙個外觀
模式了,通過實現乙個更加合理的介面外觀類將這些動作都包裝起來,實現一
鍵「看電視」、一鍵「關電視」。這就是外觀模式的動機
一、模式定義
系統的耦合度。
二、模式結構
三、模式實現
例項的uml圖
首先是四個元件(電視、電燈、空調、銀幕)
1public
class
television 56
public
void
off()
9 }
1public
class
light 56
public
void
off()
9 }
1public
class
aircondition 56
public
void
off()
9 }
1然後是比較強大、乾淨、美觀的外觀public
class
screen 56
public
void
down()
9 }
1客戶端public
class
watchtvswtichfacade
1314
public
void
on()
2021
public
void
off()
27 }
1執行結果public
class
client
16 }
從上面的使用通過使用外觀模式,客戶可以非常方便的實現比較複雜的功能。
四、模式優缺點
優點
1、引入外觀模式,是客戶對子系統的使用變得簡單了,減少了與子系統的關聯物件,實現了子系統與客戶之間
的松耦合關係。
2、只是提供了乙個訪問子系統的統一入口,並不影響使用者直接使用子系統類
3、降低了大型軟體系統中的編譯依賴性,並簡化了系統在不同平台之間的移植過程
缺點 1、不能很好地限制客戶使用子系統類,如果對客戶訪問子系統類做太多的限制則減少了可變性和靈活性
2、在不引入抽象外觀類的情況下,增加新的子系統可能需要修改外觀類或客戶端的源**,違背了「開閉原則」
五、使用場景
1、當要為乙個複雜子系統提供乙個簡單介面時可以使用外觀模式。
2、客戶程式與多個子系統之間存在很大的依賴性。引入外觀類將子系統與客戶以及其他子系統解耦,可以提
高子系統的獨立性和
可移植性
六、模式總結
1、 外觀模式的主要優點就在於減少了客戶與子系統之間的關聯物件,使用客戶對子系統的使用變得簡單了,
也實現了客戶與子
系統之間的松耦合關係。它的缺點就在於違背了「開閉原則」。
2、 如果需要實現乙個外觀模式,需要將子系統組合進外觀中,然後將工作委託給子系統執行。
大話設計模式讀書筆記 外觀模式
人物 大鳥,小菜 事件 小菜與大鳥談起了 大鳥就藉著 裡 和 的概念給小菜談起了外觀模式 外觀模式 1.借用 的 和 簡單闡述外觀模式 2.對外觀模式進行小結 設計思路如圖 買 1 public void buy 2 slf4j public class stock2 買 1 public void...
大話設計模式讀書筆記之外觀模式
1.定義 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。2.uml類圖 3.簡單 實現 package com.guo.facadepattern public class subsystemone package com.guo.facade...
設計模式讀書筆記
設計模式 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞。對於擴充套件是開放的,對於更改是封閉的。無論模組是多麼的 封閉 都會...