设计模式笔记 10.Facade 外观模式(结构型模式)
?
10. Facade 外觀模式????? 2008-8-18
?
動機(Motivation)
上述A方案的問題在于組件的客戶和組件中各種復雜的子系統有了過多的耦合,隨著外部客戶程序和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。
如何簡化外部客戶程序和系統間的交互接口?如何將外部客戶程序的演化和內部子系統的變化之間的依賴相互解耦?
意圖(Intent)
為子系統中的一組接口提供一個一致的界面,Fa?ade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。???????——《設計模式》GoF
?
基本代碼:??
子系統類:?
????class?SubSystemOne????{
????????public?void?MethodOne()
????????{
????????????Console.WriteLine("子系統方法一");
????????}
????}
????class?SubSystemTwo
????{
????????public?void?MethodTwo()
????????{
????????????Console.WriteLine("?子系統方法二");
????????}
????}
????class?SubSystemThree
????{
????????public?void?MethodThree()
????????{
????????????Console.WriteLine("?子系統方法三");
????????}
????}
????class?SubSystemFour
????{
????????public?void?MethodFour()
????????{
????????????Console.WriteLine("?子系統方法四");
????????}
????}
??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模式不僅簡化了整個組件系統的接口,同時對于組件內部與外部客戶程序來說,從某種程度上也達到了一種“解耦”的效果——內部子系統的任何變化不會影響到Fa?ade接口的變化。
Fa?ade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。Fa?ade很多時候更是一種架構設計模式。
Fa?ade設計模式并非一個集裝箱,可以任意地放進任何多個對象。Fa?ade模式中組件的內部應該是“相互耦合關系比較大的一系列組件”,而不是一個簡單的功能集合。
注意區分Fa?ade模式、Adapter模式、Bridge模式與Decorator模式。Fa?ade模式注重簡化接口,Adapter模式注重轉換接口,Bridge模式注重分離接口(抽象)與其實現,Decorator模式注重穩定接口的前提下為對象擴展功能。
適用性:
1.為一個復雜子系統提供一個簡單接口。
2.提高子系統的獨立性。
3.在層次化結構中,可以使用Facade模式定義系統中每一層的入口。
?
?
轉載于:https://www.cnblogs.com/MaoBisheng/archive/2008/08/18/1270604.html
總結
以上是生活随笔為你收集整理的设计模式笔记 10.Facade 外观模式(结构型模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顾客去饭店吃饭,被提前点了一大桌菜
- 下一篇: asp.net ajax控件工具集 Au