設計模式之外觀模式

2021-10-20 22:39:18 字數 1605 閱讀 5674

外觀模式(facade),也叫「過程模式「。外觀模式為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。

外觀模式通過定義乙個一致的介面,用以遮蔽內部子系統的細節,使得呼叫端只需跟這個介面發生呼叫,而無需關心這個子系統的內部細節。

比如說食堂的盤裝套飯,乙個盤子四個坑,乙個裝公尺飯,另外三個搭配不同的菜式。

假如有如下模組中的5個基礎功能,對外封裝成介面:

如果有乙個需求,需要先呼叫介面1再呼叫介面2最後呼叫介面5。

後面又有需求,需要按照順序先呼叫介面4,再呼叫介面2,最後呼叫介面5。

發現很麻煩,因為需求在不斷變更,那麼呼叫的內容也會變更。

解決方法如下:

將需要的介面組合成乙個大的介面,大介面中包含子功能介面。

外觀模式包含如下兩個角色:

(1) facade(外觀角色):在客戶端可以呼叫它的方法,在外觀角色中可以知道相關的(乙個或者多個)子系統的功能和責任;在正常情況下,它將所有從客戶端發來的請求委派到相應的子系統去,傳遞給相應的子系統物件處理。

(2) subsystem(子系統角色):在軟體系統中可以有乙個或者多個子系統角色,每乙個子系統可以不是乙個單獨的類,而是乙個類的集合,它實現子系統的功能;每乙個子系統都可以被客戶端直接呼叫,或者被外觀角色呼叫,它處理由外觀類傳過來的請求;子系統並不知道外觀的存在,對於子系統而言,外觀角色僅僅是另外乙個客戶端而已。

注意:子類中沒有facade的任何資訊,即沒有對facade物件的引用。

呼叫關係是:客戶端類client呼叫外觀類facade,外觀類組合子系統類subsystema、subsystemb.......

首先是子系統類subsystema、subsystemb等。

public class subsystema 

}

接著是外觀類facade,對子系統介面的組合。

public class facade 

public void combomethodb()

}

最後是客戶端類client,呼叫外觀類的組合介面方法。

public class client 

}

外觀模式的優點:

外觀模式的缺點:

外觀模式的應用場景:

總結:外觀模式就是子系統的組合使用

設計模式之外觀模式

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

設計模式之外觀模式

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

設計模式之外觀模式

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