設計模式學習 外觀模式

2021-10-24 06:41:10 字數 2610 閱讀 8849

facade模式也叫外觀模式,是由gof提出的23種設計模式中的一種。

facade模式為一組具有類似功能的類群,比如類庫,子系統等等,提供乙個一致的簡單的介面。這個一致的簡單的介面被稱作facade

外部與乙個子系統的通訊必須通過乙個統一的外觀物件進行,為子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用

屬於結構型設計模式

簡單的案例一

class

subsystem1

;void subsystem1::

run(

)class

subsystem2

;void subsystem2::

run(

)class

subsystem3

;void subsystem3::

run(

)class

facade

;facade::

facade()

facade::

~facade()

if(sys2 !=

null)if

(sys3 !=

null)}

void facade::

run(

)//三個子系統同時執行才能完成這個功能

intmain()

簡單案例二

假設現有一家庭影院,有兩種模式:

ktv模式:電視開啟、燈關閉、音響開啟、麥克風開啟、***開啟

遊戲模式:電視開啟、影響開啟、遊戲機開啟、麥克風開啟

void tv::

turn_on

(void

)void tv::

turn_off

(void

)class

light

;void light::

turn_on

(void

)void light::

turn_off

(void

)class

sound

;void sound::

turn_on

(void

)void sound::

turn_off

(void

)class

microphone

;void microphone::

turn_on

(void

)void microphone::

turn_off

(void

)class

***;

void ***::

turn_on

(void

)void ***::

turn_off

(void

)class

games

;void games::

turn_on

(void

)void games::

turn_off

(void

)class

ktvfacademode

;ktvfacademode::

ktvfacademode()

ktvfacademode::

~ktvfacademode()

if(m*** !=

null)if

(msound !=

null)if

(mlight !=

null)if

(mmic !=

null)if

(mgames !=

null)}

void ktvfacademode::

run(

)class

gamefacademode

;gamefacademode::

gamefacademode()

gamefacademode::

~gamefacademode()

if(m*** !=

null)if

(msound !=

null)if

(mlight !=

null)if

(mmic !=

null)if

(mgames !=

null)}

void gamefacademode::

run(

)

int

main()

else

if(modeselect ==

"game"

)else

}delete aktvfacade;

delete agamefacade;

return0;

}

設計模式學習 外觀模式

很久沒有拿出時間來寫一些東西了。最近在學習設計模式的內容,收益匪淺,打算寫乙個系列。將複雜的子系統內容,整合成簡約 學習成本低的介面。我們早晨出門上班,雖然每天都做得沒有感覺複雜,但是在 中體現,就會是這樣 breadmarker.make door.open dorr.close car.star...

iOS 設計模式學習 外觀模式

最近在學習 objective c程式設計之道 ios設計模式解析 本文是對外觀模式的乙個分析和例子實現。裡面包含書的例子。標籤 介面適配 外觀模式為子系統中一組不同的介面提供統一的介面。外觀定義了上層介面,通過降低複雜度和隱藏子系統間的通訊及依存關係,讓子系統更易於使用。類圖如下 子系統正逐漸變得...

設計模式學習之外觀模式

uml結構類圖的常用畫法 簡單工廠 demo傳送門 案例 有modulea,moduleb,modulec三個類,這三個類實現三個不同的方法 1.按照普通思路,客戶端如果想要和這三個類打交道,一般的做法就是直接引入三個類,分別進行例項化,然後引用三個類中的方法 2.採用外觀模式,客戶端無需知道這三個...