C 設計模式之外觀

2022-03-02 16:25:04 字數 1267 閱讀 2582

ironman之外觀

接著上篇觀察者內容的「劇情」,沒看過的朋友也沒關係,篇幅之間有銜接的關係但是影響不大。

需求:

為"兵工廠"提供各種支援,生產了各式各樣的"ironman",因為"ironman"是智慧型的,它有乙個"總控中心",用來使用各個部件的功能,以及 其它功能的使用。"總控中心"也是使用者在穿戴時顯示在使用者眼前的ui。

現在遇到乙個問題,大家都來看一下,"ironman"在穿戴好啟動的時候,"總控"會讓"ironman"各個部件自動自檢,自檢完成後要在ui那顯示出 自檢的結果,當然自檢的順序可以是固定的也可以是不固定的,隨便怎麼檢查,最終是要返回所有的部件自檢結果。

假設的基礎結構情況:

1

public

class

component127

}8public

class

component2914

}15public

class

component3

1621 }

假設還有若干個部件,按照平常的狀態它們都要一一的自檢。在這樣的情況下使用的**則是這樣的:

1

///2

///控制中心

3///

4public

class

centercontroller

518 }

這樣做下去的話是不是很費事,而且控制中心和部件的耦合度也比較大,如果部件個數自檢的修改也會牽扯到控制中心內部的修改,這樣的行為是違反設計原則的。

外觀模式(facade)的定義:為子系統中的一組介面提供乙個一致的介面,用來訪問子系統中的一群介面。

根據設計模式的中心思想來做修改,把部件自檢的操作都封裝在單獨的一層中,讓控制中心和部件解耦,我們來看一下修改後的**:

1

public

class

facade

213 }

這樣定義了外觀類過後,再來看一下控制中心的呼叫修改:

1

///2

///控制中心

3///

4public

class

centercontroller

514 }

在兩層中間加入了facade這一層,耦合的問題就迎刃而解,好像好多解耦的方式都是這樣的。

出處:

c 設計模式之外觀模式

外觀模式 facade pattern 結構型模式 這個外觀類為子系統提供乙個共同的對外介面,客戶 clients 物件通過乙個外觀介面讀寫子系統中各界面的資料資源。意圖 外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,定義乙個高層介面,這個介面使得這一子系統更加容易使用。適用性 1...

C 設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。使用外觀模式時,我們建立了乙個統一的類,用來包裝子系統中乙個或多個複雜的類,客戶端可以直接通過外觀類來呼叫內部子系統中方法,從而外觀模式讓客戶和子系統之間避免了緊耦合。下面是 以學生選課系統為例子演...

設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...