設計模式之 五 外觀模式Facade

2021-05-27 05:40:29 字數 1424 閱讀 1507

facade外觀模式,是一種結構型模式,它主要解決的問題是:元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子:比如,現在有一輛汽車,我們(客戶程式)要啟動它,那我們就要發動引擎(子系統1),使四個車輪(子系統2)轉動。但是實際中我們並不需要用手推動車輪使其轉動,我們踩下油門,此時汽車再根據一些其他的操作使車輪轉動。油門就好比系統給我們留下的介面,不論汽車是以何種方式轉動車輪,車輪變化成什麼牌子的,我們要開走汽車所要做的還是踩下油門。

gof《設計模式》中說道:為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。

façade外觀模式的結構大概是這樣的:

我就上面說的那個情形寫一下實現**,首先我們要實現三個子系統(wheel、engine、body):

internal class engine

public string enginestop()

}internal class wheel

public string wheelstop()

}internal class body}}

然後,我們再來實現汽車的facade

class ca***cade

}public void stop()}}

現在我們來使用客戶端程式驗證一下,**如下:

class program

}

執行結果如下;

bmw's engine is working

bmw's wheel is circumrotating

bmw's wheel is circumrotating

bmw's wheel is circumrotating

bmw's wheel is circumrotating

bmw's engine is stoped

bmw's wheel is stoped

bmw's wheel is stoped

bmw's wheel is stoped

bmw's wheel is stoped

正如上面所說:客戶端**(program)不需要關心子系統,它只需要關心ca***cade所留下來的和外部互動的介面,而子系統是在ca***cade中聚合。

façade模式的幾個要點:

1、從客戶程式的角度看,facade模式不僅簡化了整個元件系統的介面,同時對於元件內部與外部客戶程式來說,從某種程度上也達到了一種「解耦」的效果——內部子系統的任何變化不會影響到facade介面的變化。

2、facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade很多時候更是一種架構設計模式。

**

研磨設計模式學習筆記2 外觀模式Facade

大綱 概述實現 一 概述 簡介 外觀模式是一種結構性模式,他為客戶端提供了乙個簡便的訪問介面即外觀。客戶只要和這個外觀打交道,遮蔽了系統內部的複雜性。角色 外觀模式由2個角色,1是外觀 2是子系統。使用 客戶想執行多個子系統的操作,為了簡化客戶的操作,我們提供乙個外觀,這個外觀只有乙個入口,客戶只根...

設計模式筆記(五) 外觀模式

定義 又叫門面模式,提供了乙個統一的介面,用來訪問子系統中的一群介面 外觀模式定義了乙個高層介面,讓子系統更容易使用 型別 結構型 適用場景 子系統越來越複雜,增加外觀模式提供簡單呼叫介面 構建多層系統結構,利用外觀物件作為每層的入口,簡化層間呼叫 優點 簡化了呼叫過程,無需了解深入子系統,防止帶來...

設計模式之七外觀模式

外觀模式 給介面提供一致的外觀 當客戶需要使用到子系統的多個功能時,客戶如果逐個去呼叫每乙個功能會引起較大 量 並存在潛在的錯誤可能性 如果這些功能都位於不同的類中,客戶需要去了解每乙個類 解決方法是 為所有類的介面提供乙個一致的介面,這一介面提供了所有使用者需要的操作 通俗理解 木蘭從軍,需要買各...