設計模式之外觀模式(Facade)

2021-05-27 17:16:06 字數 1351 閱讀 5403

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)

場景 病人去醫院看病,首先病人必須先 然後門診。如果醫生要求化驗,病人必須首先劃價,然後繳費,才可以到化驗部門做化驗。化驗後再回到門診室。解決這種不便的方法便是引進外觀模式,醫院可以設定乙個接待員的位置,由接待員負責代為 劃價 繳費 取藥等。這個接待員就是外觀模式的體現,病人只接觸接待員,由接待員與...