外觀模式也叫做「過程模式」,該模式的核心思想是為不同子系統(類)中的一組介面提供乙個一致的介面(類)。也就是定義乙個高層次的類,該類封裝了一些低層次的類和其方法,客戶端使用時就用該類。
通過外觀模式可以遮蔽子系統中的細節,促使呼叫端只需要跟高層次的類發生關係即可,無需再關注子系統的內部實現細節。
外觀模式還從一定程度上簡化了使用者的操作,降低了使用的複雜度。
角色以及職責講解:
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就是典型的介面卡模式應用場景。介面卡模式解決的是兩個不相容的介面或者物件之間的相容性問題,他提供一種混合介面卡和目標物件之間的介面或者方法的混血物件。把乙個類的介面變換成客戶端所期待的另一種介面,從而...