一文帶你學會「外觀模式」,不會你找我

2021-10-09 11:14:07 字數 2074 閱讀 2999

外觀模式也叫做「過程模式」,該模式的核心思想是為不同子系統(類)中的一組介面提供乙個一致的介面(類)。也就是定義乙個高層次的類,該類封裝了一些低層次的類和其方法,客戶端使用時就用該類。

通過外觀模式可以遮蔽子系統中的細節,促使呼叫端只需要跟高層次的類發生關係即可,無需再關注子系統的內部實現細節。

外觀模式還從一定程度上簡化了使用者的操作,降低了使用的複雜度。

角色以及職責講解:

1、facadeclass(外觀類):給客戶端提供統一的介面,外觀類知道當前的請求由哪些子系統負責。從而可以做到將客戶端的請求**給適當的子系統進行處理。

2、subsystem1-4(子系統):功能的實際提供者,用於處理外觀類指派來的任務。

3、client(客戶端):外觀類的呼叫者。

通過以上的類圖和描述大家是否對外觀模式有了一定的認識?下面讓我們通過乙個小案例來體會一下外觀模式的魅力。

案例:到吃飯的時間了小菜鳥想吃西紅柿雞蛋面,現在有兩個選擇,可以選擇自己買好原材料,自己做飯,也可以選擇下館子(飯店)。作為乙個聰明的菜鳥,我當然是選擇下館子嘛,有現成的為什麼要自己造輪子那?這裡的飯店就相當外觀類,下面讓我們用**實現以下。

子系統相關類

/**

* 採購員 => 對應子系統角色

*/public

class

buyer

private

buyer()

protected

void

egg(

)protected

void

tomatoes()

protected

void

noodle()

}/**

* 廚師 => 對應子系統角色

*/public

class

chef

private

chef()

public

void

cook()

}/**

* 服務員 => 對應子系統角色

*/public

class

waiter

private

waiter()

public

void

deliver()

}

外觀類

/**

* 餐廳 => 對應外觀類角色

*/public

class

restaurantfacade

// 顧客點麵條

public

void

ordernoodles()

}

客戶端測試類

public

class

client

}

測試結果

1、外觀模式對外遮蔽了子系統的實現細節,從而降低了客戶端對子系統使用的複雜度。

2、使用外觀模式可以降低客戶端與子系統的耦合性,使得子系統內部更容易維護和擴充套件。

3、當系統需要分層設計時,可以使用外觀模式,並且通過合理的使用外觀模式,可以幫我們更好的劃分系統的訪問層次。

4、不能過多的或者不合理的使用外觀模式。具體是使用外觀模式好,還是直接呼叫模組好,要以讓系統有層次,利於維護為目的。

今天的分享就到這裡了,如果感覺「菜鳥」寫的文章還不錯,記得點讚加關注呦!你們的支援就是我堅持下去的動力。文章**寫的有問題的也希望大家可以指出,我會虛心受教。

一文帶你學會「工廠方法模式」,不會你揍我

先讚再看,多好的習慣。今天,咱們還拿 汽車廠開發生產汽車軟體 這個案例進行講解。一開始,汽車廠剛剛起步,名聲不大,銷售額也有限,老闆也就只生產國產車,此時我們設計的生產汽車軟體,使用 簡單工廠模式 還是可以滿足需求的。但是隨著企業的發展,產業的擴大,老闆不再滿足只製造國產車,進一步開始涉足合資車。在...

一文帶你讀懂「TRIZ」

各位好,本期的內容是 triz與經典triz 在開始之前,請您先嘗試回答以下問題 什麼是triz?什麼是 經典triz 經典triz 包括哪些內容?經典triz 與 現代triz 的區別?您可以先思考一會兒。好了,不知您回答對了幾道題呢?為什麼要學習本課程?學習本課程,你可以獲得哪些知識?在此,我要...

一文帶你理解介面卡模式

介面卡模式是一種極為常見的設計模式,特別是在android世界中,像listview的adapter就是典型的介面卡模式應用場景。介面卡模式解決的是兩個不相容的介面或者物件之間的相容性問題,他提供一種混合介面卡和目標物件之間的介面或者方法的混血物件。把乙個類的介面變換成客戶端所期待的另一種介面,從而...