外觀模式是軟體工程中常用的一種軟體設計模式。它為子系統中的一組介面提供乙個統一的高層介面。使用子系統更容易使用。
在真實的應用系統中,乙個子系統可能由很多類組成。子系統的客戶為了它們的需要,需要和子系統中的一些類進行互動。客戶和子系統的類進行直接的互動會導致客戶端物件和子系統(figure1)之間高度耦合。任何的類似於對子系統中類的介面的修改,會對依賴於它的所有的客戶類造成影響。
外觀模式(facade pattern)很適用於在上述情況。外觀模式(facade pattern)為子系統提供了乙個更高層次、更簡單的介面,從而降低了子系統的複雜度和依賴。這使得子系統更易於使用和管理。
外觀是乙個能為子系統和客戶提供簡單介面的類。當正確的應用外觀,客戶不再直接和子系統中的類互動,而是與外觀互動。外觀承擔與子系統中類互動的責任。實際上,外觀是子系統與客戶的介面,這樣外觀模式降低了子系統和客戶的耦合度(figure2).
從figure2中我們可以看到:外觀物件隔離了客戶和子系統物件,從而降低了耦合度。當子系統中的類進行改變時,客戶端不會像以前一樣受到影響。
儘管客戶使用由外觀提供的簡單介面,但是當需要的時候,客戶端還是可以視外觀不存在,直接訪問子系統中的底層次的介面。這種情況下,它們之間的依賴/耦合度和原來一樣。
外觀模式用到了一條非常有用的設計原則:最少知識原則(least knowledge principle),也稱為迪公尺特原則(law of demeter)。
only talk to your immediate friends , don't talk to strangers .
外觀 封裝了子系統之間複雜的互動和依賴關係,為客戶物件提供了單一簡單的介面,降低了系統的複雜性。類之間耦合度越低,越易擴充套件和實現重用。
設計模式 外觀模式
外觀模式,我的理解就是將複雜的類進行重新封裝,將簡單的介面呈現出來,降低呼叫端和實際類的耦合性。拿 大話設計模式 上邊關於 和 的例子來說。對於不入門的股民來說,交易有些過於龐大,需要學習的東西很多,如果沒整明白就進行投資,很容易賠錢的。很多剛入 的股民都賠的很慘。而買 有提出了乙個新的觀念,我們買...
設計模式 外觀模式
何為外觀模式?外觀模式 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得一子系統更加容易使用。它是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和 各子系統的演化,這種過多的耦合面臨很多變化的挑戰。uml類圖 乙個...
設計模式 外觀模式
外觀模式說白了就是為一組介面提供乙個一致的介面。例如 定義三個類a b c,每個類各定義乙個方法。class a pubic void showa cout a showa pubic void showb cout b showb pubic void showc cout c showc 定義乙...