設計模式之外觀模式Facade

2021-06-07 05:52:46 字數 1320 閱讀 4623

什麼是外觀模式,我想大家在網上一搜就有一大把結果,告訴你什麼是外觀模式,可能定義不完全一樣,但是意思確差不多,也就是它為子系統中的一組介面提供了乙個統一的介面(或者叫做介面),這樣的好處就是隱藏了子系統的細節。下面就簡單的談談我本人對該模式的使用和理解:

1、為什麼要用這個東西:

比如一,當你在設計分層架構時,層與層之間需要分離,前端要對後台的方法進行呼叫,當你的系統足夠的複雜的話,那麼前台對後台的呼叫也會變得異常的複雜;比如二,你在設計的時候,子系統往往會因為不斷的重構演化變得越來越複雜,然後這也給外部的呼叫增加了困難;比如三,在維護乙個遺留的大系統時,可能隨著時間的推移,系統也會變得越來越難以維護,但是它包含了非常重要的功能,新的需求依賴於它。

然而此時增加乙個外觀可以大大減少難度,說白了外觀是用來解偶的。增加乙個facade,讓前端對後台的呼叫不去直接呼叫後台的介面或方法,直接與facede類進行互動即可,讓那些呼叫這些不斷變化的子系統的介面不去直接呼叫那些不斷變化的子系統的介面,而呼叫乙個簡單的facade,讓那些新的需求也不再直接去呼叫難以維護的老系統,而是增加乙個外觀facade,讓新的系統直接與外觀facade類互動。這樣大大的減少了他們之間的依賴。

2、怎麼使用它:

facade類,知道哪些子系統類負責處理請求,將客戶的請求**給適當的子系統物件。

比如,前端需要呼叫後台的一些方法,因此我們可以定義乙個facade介面,介面中有個invoke的抽象方法,其中serveraction類指的是你所有對後台所進行的操作的資訊:

定義乙個facade的介面:

public inte***ce facade

前端實現facade介面

public class facadeofgui implements facade

public static facadeofgui getinstance()

public object invoke(serveraction action) throws serveractionexception

public class facadeofserver implements facade

public static facadeofgui getinstance()

public object invoke(serveraction action) throws serveractionexception

3、總結:前台所有要對後台的操作,只要呼叫facadeofgui的invoke方法即可,不需要過多的關注後台的方法是否變動等等,前後臺之間的耦合度大大降低。

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

facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子 比如,現在有一輛汽車,我們 客戶程式 要啟動它,那我們就要發動引擎 子系統1 使四個車輪 子系統2 ...

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

外觀模式是為了解決類與類之家的依賴關係的,像spring一樣,可以將類和類之間的關係配置到配置檔案中,而外觀模式就是將他們的關係放在乙個facade類中,降低了類類之間的耦合度,該模式中沒有涉及到介面。看下類圖 我們以乙個計算機的啟動過程為例 我們先看下實現類 public class cpu pu...

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

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