外觀模式是什麼?為什麼要使用外觀模式?使用外觀模式有什麼好處?外觀模式有什麼特點?本篇部落格就外觀模式的原理以及最近的使用心得做個總結。
通俗的講,外觀模式就是給系統的一組介面提供乙個統一的介面,它定義了乙個介面,這個介面使得這個子系統更加容易使用。
為什麼使用外觀模式?那我最近的例子來討論一下。來個包圖說明一下系統層次結構。
可以清楚的看到,在u層和
b層之間加了乙個外觀層,如果不加這層,會發生什麼情況呢?我簡單的畫了個用例圖來說明兩層之間的呼叫關係。
由可以看出來,角色和用例之間關係過於複雜,如果需要修改乙個用例,那麼兩個角色都需要修改,這在程式設計中是不予許的。怎麼避免這種情況呢?這就是文章需要討論的內容了
--外觀模式。
試想,如果我們在角色和用例之間加入某個東西,專門用來處理他們之間的複雜關係,然後角色和用例之間只有簡單的關聯關係,不就解決了這個問題嗎。看接下來的用例圖。
實際類圖不是這樣的,為了便於理解,類圖簡化成了用例圖,此圖沒有實際意義,僅供參考。
可見,加了外觀層以後,角色和用例之間沒有直接聯絡,它們之間的耦合度降低了,系統維護都是在外觀層進行,可維護性也提高了。
下面是外觀層的類圖結構:
由類圖可知,外觀層就是對子系統的方法的封裝,它把每個過程需要使用的所有子系統的方法封裝成了乙個方法,然後由客戶端呼叫。現實生活中有沒有類似的例子呢?有!學校的一**其實就是乙個外觀模式的應用。我們每個學生每天需要去食堂買飯,去超市買東西,去澡堂洗澡,那麼學生和學校的消費中心其實就是多對多的關係,現在有了一**,它將我們所有的交易過程封裝到了一起,我們只需要使用一張卡即可在不同的地方消費。結構圖如下:
一**的使用,為我們的生活帶來了便利。現在假如學校不使用人民幣了,使用美元來交易,那麼我們不必親自去銀行換取美元使用,只需要更改一**即可,真是方便。可見,外觀模式的使用,極大的降低了消費者和生產者之間的耦合度。
外觀模式的適用範圍:軟體設計初期階段,應該要有意識的將不同的兩個層分離開,不同的層之間就可以建立外觀層,可以使得層之間的耦合度大大降低,增加系統的可維護性。在開發階段,如果子系統越來越複雜,我們可以使用外觀來提供乙個簡單的介面,減少他們之間的依賴。在維護階段,我們可以開發乙個外觀層介面,我們只需要使用外觀層介面與新系統互動即可,可以減少很多不必要的麻煩。
總結:外觀模式向外界提供了乙個統一的介面,這一介面使得子系統更加容易使用。
簡單的外觀模式
最近機房收費系統的重構完成了,儘管就用了兩個設計模式,但是卻還是感覺怪怪的,總感覺外觀有問題,知道昨天實驗了乙個晚上,才發現自己是 錯了,現在就把我認為正確的外觀介紹給大家。什麼是外觀。簡單的說就是一組藉口,用來連線客戶端與複雜功能實現的一組藉口,防止客戶端與子系統內部產生耦合,從而導致客戶程式隨著...
簡單理解設計模式之外觀模式
最近有點忙,沒什麼時間來寫部落格,所以一閒下來就想起來,還有很多的模式沒有跟大家一起分享,所以今天就來跟大家一起談談設計模式之外觀模式。1.什麼是外觀模式?說實話,平常我很少看見跟外觀模式有關的一些講解,也可能是我孤陋寡聞吧 閒話就不多說了,不管怎樣我們先來看看外觀模式的定義 為子系統的一組介面提供...
外觀模式 遊戲開發中的設計模式 外觀模式
外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使子系統更加容易使用 依賴倒轉原則 迪公尺特法則思想 namespace 外觀模式 外觀類 class facade public void methodone public void methodtw...