設計模式之外觀模式解析

2021-10-08 12:39:23 字數 1553 閱讀 7355

什麼是外觀模式?

外觀模式和介面卡模式的區別?

接下來我們看看外觀模式如何解決這團混亂,好讓平台客戶可以輕鬆的使用實名功能。

有了外觀模式,通過實現乙個提供更合理介面的外觀類,就可以將我們複雜的實名流程涉及的子系統變得更容易使用。

**如下:

public

class

realnamesysfacade

public

boolean

realnameverify

(request request)

}

客戶使用實名功能,只需要呼叫realnamesysfacade的 realnameverify() 方法即可。這就是簡化的介面,呼叫它就一切搞定了。

提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。

上面的概念很容易理解,不過請記住模式的意圖,是提供乙個簡單的介面,好讓乙個子系統更易使用。 從下面的類圖也可以感受到這一點:

全部的內容就是這樣了,是不是很簡單,恭喜你又學會了乙個設計模式!

現在我們來學乙個新的 oo 設計原則。

最少知識原則:只和你的密友交談。

這塊有點人性化哈,說白了就是希望我們在設計中,不要耦合太多類在一起,我們也經常見系統中修改乙個類結果一搜發現到處有呼叫,非常的頭疼,後期維護成本也很高,新人也不容易看懂導致不敢改。

這裡你可能會問,這個原則具體的方法是什麼呢?如何符合最少知識原則?

這裡我給你列舉下,對於任何物件類而言,在該物件內的方法呼叫,我們應該只呼叫以下範圍的方法:

該物件本身;

被當做方法引數傳遞進來的物件;

此方法所建立或例項化的任何物件;

物件的任何元件;

前三條方針告訴我們,如果是呼叫其他方法返回的物件,我們不要呼叫該物件的方法! 第四條是說把 「元件」 想象成是被例項變數所引用的任何物件,換句話說,把這想象成是 「有乙個」(has-a) 關係。

你可能會感覺外觀模式也是組合了一些元件,對外提供乙個統一介面,而介面卡也是組合了其他元件對外提供目標介面,但是這兩者的出發點是不同的;

當需要使用乙個現有的類而其介面並不符合你的需要時,就使用介面卡;

當需要簡化並統一乙個很大的介面或者一群複雜的介面時,使用外觀;

介面卡改變介面以符合客戶的期望;

外觀將客戶從乙個複雜的子系統中解耦;

實現乙個介面卡可能需要一番功夫,也可能不費功夫,視目標介面的大小與複雜度而定;

實現乙個外觀,需要將子系統組合進外觀中,然後將工作委託給子系統執行;

可以為乙個子系統實現乙個以上的外觀,如果子系統太複雜的話,可以分多個層次;

相信看完本文的描述,你應該又掌握了乙個設計模式,恭喜你! 記著一定要帶著問題定期在自己腦海中複習,形成自己的知識體系,然後結合工作日常實踐,不然很容易忘記。

全文完,fighting!

設計模式之外觀模式

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

設計模式之外觀模式

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

設計模式之外觀模式

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