淺學設計模式之外觀模式

2021-08-26 22:14:37 字數 1399 閱讀 4029

外觀模式是軟體工程中常用的一種軟體設計模式。它為子系統中的一組介面提供乙個統一的高層介面。使用子系統更容易使用。

下圖是狀態模式的uml圖。

facade

這個外觀類為子系統中packages 1、2、3提供乙個共同的對外介面

clients

客戶物件通過乙個外觀介面讀寫子系統中各界面的資料資源。

packages

客戶可以通過外觀介面讀取的內部庫。

下面看下乙個小例子吧,看***的故事:

先得有個電視:

public class tv public void turnoff() }

dvd:

影片: public class moviedisc public string getmoviename() }

我們想看電影的時候:

//開啟電視,***,放進影片,開始看電影 tv.turnon(); ***.turnon(); ***.put***(movie); //看完了,接著看另外一部 ***.takeout(movie); moviedisc movie2 = new moviedisc("**大劫案"); ***.put***(movie2); //看完了,關機睡覺 ***.takeout(movie); ***.turnoff(); tv.turnoff();

客戶呼叫非常複雜,什麼事都得自己做。。。

使用外觀模式:

public class hometheater public void watchmovie() public void endmovie() public void chagemovie(moviedisc movie2) }

當想看電影的時候呢:

hometheater hometheater = new hometheater(***, tv, movie); hometheater.watchmovie(); hometheater.chagemovie(movie2); hometheater.endmovie();

只需要呼叫幾個簡單的介面就可以了。

看下完整的測試類:

public class tets }

結果:客戶端,只短短呼叫幾行**,就實現了功能,沒那麼繁瑣。

注意和其他設計模式的區別

**模式

1 **模式中的原類和**類繼承同一父類;

2 原類物件與**類物件介面相同,功能一致;

3 起到了隱藏原類的作用。

介面卡模式

1 只有介面卡繼承目標介面;

2 將原有類介面轉換為目標**需求的介面。

外觀模式

是多個類的整合、統一適配。

學習外觀模式很好的資料:

以上很多資料從網上整理而來。

設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...

設計模式之外觀模式

外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...

設計模式之外觀模式

外觀模式,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,層與層之間建立外觀facade。在開發階段,子系統往往因不斷的重構演化而變得越來越複雜,增加外觀模式可以提供乙個簡單的...