设计模式笔记 10.Facade 外观模式(结构型模式)
?
10. Facade 外觀模式????? 2008-8-18
?
動機(Motivation)
上述A方案的問題在于組件的客戶和組件中各種復(fù)雜的子系統(tǒng)有了過多的耦合,隨著外部客戶程序和各子系統(tǒng)的演化,這種過多的耦合面臨很多變化的挑戰(zhàn)。
如何簡化外部客戶程序和系統(tǒng)間的交互接口?如何將外部客戶程序的演化和內(nèi)部子系統(tǒng)的變化之間的依賴相互解耦?
意圖(Intent)
為子系統(tǒng)中的一組接口提供一個一致的界面,Fa?ade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。???????——《設(shè)計模式》GoF
?
基本代碼:??
子系統(tǒng)類:?
????class?SubSystemOne????{
????????public?void?MethodOne()
????????{
????????????Console.WriteLine("子系統(tǒng)方法一");
????????}
????}
????class?SubSystemTwo
????{
????????public?void?MethodTwo()
????????{
????????????Console.WriteLine("?子系統(tǒng)方法二");
????????}
????}
????class?SubSystemThree
????{
????????public?void?MethodThree()
????????{
????????????Console.WriteLine("?子系統(tǒng)方法三");
????????}
????}
????class?SubSystemFour
????{
????????public?void?MethodFour()
????????{
????????????Console.WriteLine("?子系統(tǒng)方法四");
????????}
????}
??Facade類:
????class?Facade????{
????????SubSystemOne?one;
????????SubSystemTwo?two;
????????SubSystemThree?three;
????????SubSystemFour?four;
????????public?Facade()
????????{
????????????one?=?new?SubSystemOne();
????????????two?=?new?SubSystemTwo();
????????????three?=?new?SubSystemThree();
????????????four?=?new?SubSystemFour();
????????}
????????public?void?MethodA()
????????{
????????????Console.WriteLine("\n方法組A()?----?");
????????????one.MethodOne();
????????????two.MethodTwo();
????????????four.MethodFour();
????????}
????????public?void?MethodB()
????????{
????????????Console.WriteLine("\n方法組B()?----?");
????????????two.MethodTwo();
????????????three.MethodThree();
????????}
????}
客戶端代碼:
????class?Program????{
????????static?void?Main(string[]?args)
????????{
????????????Facade?facade?=?new?Facade();
????????????facade.MethodA();
????????????facade.MethodB();
????????????Console.Read();
????????}
????}
?
Facade的幾個要點:
從客戶程序的角度來看,Facade模式不僅簡化了整個組件系統(tǒng)的接口,同時對于組件內(nèi)部與外部客戶程序來說,從某種程度上也達到了一種“解耦”的效果——內(nèi)部子系統(tǒng)的任何變化不會影響到Fa?ade接口的變化。
Fa?ade設(shè)計模式更注重從架構(gòu)的層次去看整個系統(tǒng),而不是單個類的層次。Fa?ade很多時候更是一種架構(gòu)設(shè)計模式。
Fa?ade設(shè)計模式并非一個集裝箱,可以任意地放進任何多個對象。Fa?ade模式中組件的內(nèi)部應(yīng)該是“相互耦合關(guān)系比較大的一系列組件”,而不是一個簡單的功能集合。
注意區(qū)分Fa?ade模式、Adapter模式、Bridge模式與Decorator模式。Fa?ade模式注重簡化接口,Adapter模式注重轉(zhuǎn)換接口,Bridge模式注重分離接口(抽象)與其實現(xiàn),Decorator模式注重穩(wěn)定接口的前提下為對象擴展功能。
適用性:
1.為一個復(fù)雜子系統(tǒng)提供一個簡單接口。
2.提高子系統(tǒng)的獨立性。
3.在層次化結(jié)構(gòu)中,可以使用Facade模式定義系統(tǒng)中每一層的入口。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/MaoBisheng/archive/2008/08/18/1270604.html
總結(jié)
以上是生活随笔為你收集整理的设计模式笔记 10.Facade 外观模式(结构型模式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顾客去饭店吃饭,被提前点了一大桌菜
- 下一篇: Flash读取xml奥秘