facade外觀模式,是一種結構型模式,它主要解決的問題是:元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子:比如,現在有一輛汽車,我們(客戶程式)要啟動它,那我們就要發動引擎(子系統1),使四個車輪(子系統2)轉動。但是實際中我們並不需要用手推動車輪使其轉動,我們踩下油門,此時汽車再根據一些其他的操作使車輪轉動。油門就好比系統給我們留下的介面,不論汽車是以何種方式轉動車輪,車輪變化成什麼牌子的,我們要開走汽車所要做的還是踩下油門。
gof《設計模式》中說道:為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。
façade外觀模式的結構大概是這樣的:
我就上面說的那個情形寫一下實現**,首先我們要實現三個子系統(wheel、engine、body):
package com.ray.facade;
public class ca***cade
// console.class.w
}public void stop()
}}/**
* * [一句話功能簡述]
* [功能詳細描述]
* * @author administrator
* @version [, 2011-8-26]
*/class engine
public void enginestop()
}class wheel
public void wheelstop()
}class body}}
package com.ray.facade;
public class testfacade
/*** [一句話功能簡述]
* [功能詳細描述]
* * @param args
*/public static void main(string args)
}
注意和其他設計模式的區別
**模式
1 **模式中的原類和**類繼承同一父類;
2 原類物件與**類物件介面相同,功能一致;
3 起到了隱藏原類的作用。
介面卡模式
1 只有介面卡繼承目標介面;
2 將原有類介面轉換為目標**需求的介面。
外觀模式
是多個類的整合、統一適配。
設計模式之外觀模式Facade
什麼是外觀模式,我想大家在網上一搜就有一大把結果,告訴你什麼是外觀模式,可能定義不完全一樣,但是意思確差不多,也就是它為子系統中的一組介面提供了乙個統一的介面 或者叫做介面 這樣的好處就是隱藏了子系統的細節。下面就簡單的談談我本人對該模式的使用和理解 1 為什麼要用這個東西 比如一,當你在設計分層架...
設計模式之外觀模式(Facade)
外觀模式是為了解決類與類之家的依賴關係的,像spring一樣,可以將類和類之間的關係配置到配置檔案中,而外觀模式就是將他們的關係放在乙個facade類中,降低了類類之間的耦合度,該模式中沒有涉及到介面。看下類圖 我們以乙個計算機的啟動過程為例 我們先看下實現類 public class cpu pu...
設計模式之外觀模式(Facade)
場景 病人去醫院看病,首先病人必須先 然後門診。如果醫生要求化驗,病人必須首先劃價,然後繳費,才可以到化驗部門做化驗。化驗後再回到門診室。解決這種不便的方法便是引進外觀模式,醫院可以設定乙個接待員的位置,由接待員負責代為 劃價 繳費 取藥等。這個接待員就是外觀模式的體現,病人只接觸接待員,由接待員與...