隨著系統越來越複雜龐大,定義的類及其衍生的子類也會越來越多,系統的重用性也得到了加強。然而對於一些簡單客戶端來講,過於複雜的子系統只會增加對他們的強耦合,一旦子系統變動,所有的客戶端也必須跟著改動。外觀模式在一定程度上解決了這個問題。它把客戶端需要實現的功能包裹起來,客戶端只需要訪問它這麼乙個外觀,無須窺探內部細節。而子系統的變動,只會影響外觀模式本身做少量的變動。外觀模式屬於技巧性比較弱的一種模式。
建立乙個facade類,將實現的功能**其中。只提供給客戶端乙個松耦合的介面。 圖略
假設我們需要駕駛一輛汽車,無非是兩種動作,啟動引擎,車輪滾動。因此就有如下兩個類:
public class engine對於駕駛員來說,他可以直接呼叫兩個類的各自的方法完成駕車的實現。然而很明顯,這是駕駛自動車的方法,如果是手動車呢?需要再新增乙個類完成離合器類的功能。那麼所有的駕駛員類必須都要修改,來適應離合器的加入。這是一件費時沒有效率的工作。而引入facade模式,就可以較好的解決這個問題。public void stop()
}--------
public class wheel
public void stop()
}
public class ca***cade對於ca***cade而言,它暴露給駕駛員的只有drive和pulloff兩個方法,至於drive如何實現,內部有沒有離合器的動作,駕駛員無須知道。一旦開車的方法變了,只需要在facade內修改drive的方法即可,對於所有的駕駛員類而言,完全不受影響。public void drive()
public void pulloff()
}
因此,駕駛員所需要做的,無非是下面的動作。
public class client該樣例的類結構如下:}
外觀模式(Facade)
外觀模式的定義是,為子系統中的一組介面提供乙個一致的inte ce介面介面。外觀模式是個很簡單,但很重要的模式,它主要思想是將表現層和邏輯層隔離,封裝底層的複雜處理,只為使用者提供簡單的介面,這樣的例子隨處可見。外觀模式也叫門面模式,它很多時候更是一種系統架構的設計,在我所做的專案中,就實現了門面模...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade外觀模式,是一種結構型模式,它主要解決...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子 比如,現在有一輛汽車,我們 客戶程式 要啟動它,那我們就要發動引擎 子系統1 使四個車輪 子系統2 ...