外觀:
外觀就是給予我們視覺上的最直接的感受,是指形狀、圖案、色彩或其結合;
形狀是指三維產品的造型,如電視機、小汽車的外形。圖案一般是指兩維的平面設計,如牀單、地毯的圖案等。色彩可以是構成圖案的成分,也可以是構成形狀的部分。
外觀模式:外觀模式就像一個外觀設計師,將那些混亂的形狀,圖案、色彩拼裝成美麗的圖畫。讓後將這美麗的圖畫展現在我們的面前。
現實聯想:
就像這Windows系統,我想Windows系統之所以會風靡全球就是因爲他是Windows窗口。他簡單漂亮,他的使用簡單方便,不用客戶知道這個當他點擊這個圖標的時候,它的功能是怎麼實現的,客戶只需要知道點擊這個圖標之後,Windows將會實現什麼功能就行了。
總結
在這裏外觀模式跟Windows界面有類似的功能,外觀模式將所有的子功能中的部分子功能結合在一起,然後形成一個實現特定功能的方法。當然外觀模式可以根據需求對子功能進行任意組合,以形成滿足需求的新方法。
何時考慮使用外觀模式?
1、當我們的代碼需要分層的時候,我們就要考慮外觀模式,在層與層之間建立一個外觀類,這樣能有效減少層與層之間的耦合。
2、在系統的開發階段因爲子系統的不斷重構演化而變得越來越複雜。同時大多數的模式的使用還會產生很多小的類,這樣就會讓我們對類的調用會很困難。
3、在維護一個遺留的大型的系統時,可能這個系統已經非常難以維護和擴張,這樣使用外觀模式可以使新系統與舊系統之間間接交互。
第一步書寫子系統方法
class subSystemOne
{
public void Methdone()
{
Console.WriteLine("子系統方法一");
}
}
class subSystemTow
{
public void Methodtwo()
{
Console.WriteLine("子系統方法二");
}
}
class subSystemThree
{
public void MethodThree()
{
Console.WriteLine("子系統方法三");
}
}
class subSystemFour
{
public void MethodFour()
{
Console.WriteLine("子系統方法四");
}
}
第二步書寫外觀類,建立子系統方法組合接口
class Facade
{
subSystemOne one;
subSystemTow tow;
subSystemThree three;
subSystemFour four;
public Facade ()
{
one = new subSystemOne() ;
tow = new subSystemTow ();
three = new subSystemThree();
four = new subSystemFour();
}
public void MethodA()
{
Console.WriteLine("方法組一");
one.Methdone();
tow.Methodtwo();
three.MethodThree();
}
public void MethodB()
{
Console.WriteLine("方法組二");
tow.Methodtwo();
four.MethodFour();
}
}
第三步客戶端調用
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.MethodA();
facade.MethodB();
Console.ReadKey();
}
}