設計模式 門面模式

2021-08-26 01:17:16 字數 1468 閱讀 7071

就象字面含義一樣,門面模式的作用是為了簡化使用者對一系列相關物件及操作的使用。比如使用者買包子,饅頭一樣,使用者並不需要知道包子,饅頭的製造過程和細節,也不需要進入廚房,而只需要在門面,向服務員進行購買,拿包子,找錢,打包的事情都有服務員來完成,使用者最後只需要得到要買的東西和找零的錢即可。門面模式將一系列複雜而相關的操作封裝成乙個簡單的操作介面。比如就編譯子系統來說,有很多的操作如,詞法掃瞄、語法分析等,這些操作都由不同的物件來負責。

但對於編譯系統來說,它不需要知道這些子系統的具體實現細節,它關心的是怎樣完成編譯操作。這時,我們就可以為編譯系統定義乙個簡單的介面,由這個介面來組合負責相關操作的物件來協同工作,完成編譯工作。

門面模式的核心是為了簡化操作介面,使系統變得易用。

下面是個例子:

#endregion

///

/// facade 的摘要說明。

///

public class facade

public void dosomething()

}public class facade_opt1

}public class facade_opt2

}public class facade_opt3

}門面模式沒有相對固定的結構模式,但在設計中十分常用,特別是使用者互動設計中。使用者不需要知道系統內部的處理業務邏輯的細節,而只關心輸入和結果是否正確。比如資料庫連線,使用者只需要填入使用者名稱和密碼,然後呼叫乙個介面進行連線,至於資料庫連線的過程,如密碼加密,解密,所採用的資料庫鏈路之類的,使用者一般都不會關心,而由門面服務來完成。

門面模式也為一系列服務物件提供不同的服務提供了一種組合途徑。

與其它模式的關係:

1)**模式:兩種模式都起到一種「**」的作用。**模式是為乙個物件提供一種控制訪問該物件的一種機制,並不改變物件的介面。而門面模式是為一系列相關的物件的訪問,提供一種簡化的訪問介面,**物件需要實現被**者的介面,而門面模式的門面物件則不需要。

2)**模式,裝飾模式,策略模式,橋模式等都是為了增加或者改變物件的功能或者行為,而且改變的物件都是一類的。而門面模式並不改變物件的介面和功能,只是對外提供一種新的簡化了的介面,對內則協調各個物件之間的操作。

3)介面卡模式改變了物件的介面,起到了標準相容的作用,門面模式從外面看,也改變了訪問這些物件的方式,但門面模式並不改變某個物件的介面,提供的訪問介面只是為了簡化對這一系列物件的訪問。門面模式提供了一種協同工作的方式。

後記:門面模式的根本動力在於,我們在設計中為了共用或者復用,底層的很多業務邏輯(可以看做是零件邏輯)並不單純只是為了某個特定的應用,為了公用或者復用,顯得碎化,再提供給外部使用的時候,就需要根據需要進行組裝,為了減少使用者對這個組裝的依賴,往往提供一系列的組合介面(也就是門面介面)給外部使用。門面模式在實際生活中處處可見,元件化程式設計其實也源於這種思想。製造業中零件-元件-成品的製造過程也是這種思想的體現,而且提供了很大的靈活性。當然,為了支援這種設計模式,底層的零件邏輯或者是元件邏輯需要分割合理,介面要標準,而且在連線和事務處理方面也要考慮周詳。

設計模式 門面模式

一 門面模式概述 門面模式是物件的結構模式,外部與乙個子系統的通訊必須通過乙個統一的門面物件進行。門面模式提供乙個高層次的介面,使得子系統更易於使用。1 門面角色 facade 這是門面模式的核心。它被客戶角色呼叫,因此它熟悉子系統的功能。它內部根據客戶角色已有的需求預定了幾種功能組合。2 子系統角...

設計模式 門面模式

門面模式 外觀模式 將子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。1 它對客戶遮蔽子系統元件,因而減少了客戶處理的物件的數目並使得子系統使用起來更加方便。2 它實現了子系統與客戶之間的松耦合關係,而子系統內部的功能元件往往是緊耦合的。3 如果...

《設計模式》 門面模式

提供乙個門面去呼叫系統各個子模組,客戶端呼叫門面,減少客戶端與系統中各個子模組的互動,鬆散耦合,facade知道各個子模組,而各個子模組不應該知道facade的存在 客戶端也可以直接呼叫各個子模組,有外觀也可以不使用 當需要呼叫系統內部多個子模組的時候,為了避免客戶端分別呼叫子模組,提供乙個門面,讓...