C#設(shè)計(jì)模式之外觀模式介紹
更新時(shí)間:2012年10月29日 22:42:50 作者:
外觀模式:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層的接口,這個(gè)借口使得這子系統(tǒng)容易使用
1、在設(shè)計(jì)初期階段,應(yīng)該要有意識(shí)的將不同的兩層分離,比如考慮數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、表示層之間建立外觀模式,這樣可以為子系統(tǒng)提供簡單一致的接口,使得耦合大大降低。
2、開發(fā)階段,子系統(tǒng)內(nèi)部由于不夠重構(gòu)變得非常復(fù)雜,增加外觀模式可以屏蔽這個(gè)復(fù)雜性,并提供簡單的接口。
3、維護(hù)一個(gè)遺留的大型系統(tǒng),代碼不好再維護(hù)時(shí),使用外觀模式也是不錯(cuò)的選擇。
看看外觀模式的結(jié)構(gòu)圖:

Facade類定義:可以給高層系統(tǒng)提供簡單的接口
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("MethodA組合方法");
one.MethodOne();
two.MethodOne();
}
public void MethodB()
{
Console.WriteLine("MethodB組合方法");
three.MethodOne();
four.MethodOne();
}
}
SubSystemOne 類: 底層系統(tǒng)會(huì)被Facade類整合簡單的接口
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine("子系統(tǒng)方法一");
}
}
主函數(shù)調(diào)用:
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.MethodA();
facade.MethodB();
Console.ReadKey();
}
}
2、開發(fā)階段,子系統(tǒng)內(nèi)部由于不夠重構(gòu)變得非常復(fù)雜,增加外觀模式可以屏蔽這個(gè)復(fù)雜性,并提供簡單的接口。
3、維護(hù)一個(gè)遺留的大型系統(tǒng),代碼不好再維護(hù)時(shí),使用外觀模式也是不錯(cuò)的選擇。
看看外觀模式的結(jié)構(gòu)圖:

Facade類定義:可以給高層系統(tǒng)提供簡單的接口
復(fù)制代碼 代碼如下:
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("MethodA組合方法");
one.MethodOne();
two.MethodOne();
}
public void MethodB()
{
Console.WriteLine("MethodB組合方法");
three.MethodOne();
four.MethodOne();
}
}
SubSystemOne 類: 底層系統(tǒng)會(huì)被Facade類整合簡單的接口
復(fù)制代碼 代碼如下:
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine("子系統(tǒng)方法一");
}
}
主函數(shù)調(diào)用:
復(fù)制代碼 代碼如下:
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.MethodA();
facade.MethodB();
Console.ReadKey();
}
}
您可能感興趣的文章:
- 解析C#設(shè)計(jì)模式編程中外觀模式Facade Pattern的應(yīng)用
- C# 設(shè)計(jì)模式系列教程-外觀模式
- C#設(shè)計(jì)模式之單例模式實(shí)例講解
- c#設(shè)計(jì)模式 適配器模式詳細(xì)介紹
- C#設(shè)計(jì)模式之觀察者模式實(shí)例講解
- 淺談C#設(shè)計(jì)模式之代理模式
- 詳解C#的設(shè)計(jì)模式編程之抽象工廠模式的應(yīng)用
- C#中利用代理實(shí)現(xiàn)觀察者設(shè)計(jì)模式詳解
- C# 設(shè)計(jì)模式系列教程-策略模式
- 解析C#設(shè)計(jì)模式編程中的裝飾者模式
- C#設(shè)計(jì)模式之Facade外觀模式解決天河城購物問題示例
相關(guān)文章
DevExpress之ChartControl創(chuàng)建Drill-Down樣式的Title實(shí)例
這篇文章主要介紹了DevExpress之ChartControl創(chuàng)建Drill-Down樣式的Title實(shí)現(xiàn)方法,以實(shí)例形式講述了創(chuàng)建Drill-Down樣式的Title原理與實(shí)現(xiàn)過程,需要的朋友可以參考下2014-10-10C#實(shí)現(xiàn)簡單的JSON序列化功能代碼實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)簡單的JSON序列化功能,大家可以參考使用2013-11-11使用策略模式實(shí)現(xiàn)報(bào)警服務(wù)示例詳解(短信報(bào)警)
服務(wù)的功能:這個(gè)服務(wù)就是能夠?qū)崿F(xiàn)多通路報(bào)警的服務(wù),比如郵件報(bào)警、客戶端報(bào)警、短信報(bào)警等,該服務(wù)靈活性還不錯(cuò),比較方便擴(kuò)展2014-01-01Unity Shader實(shí)現(xiàn)圖形繪制(藍(lán)天白云大海)
這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)圖形繪制,藍(lán)天白云大海,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04