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.採用外觀模式,客戶端無需知道這三個...