外觀模式

外觀:

外觀就是給予我們視覺上的最直接的感受,是指形狀、圖案、色彩或其結合;
形狀是指三維產品的造型,如電視機、小汽車的外形。圖案一般是指兩維的平面設計,如牀單、地毯的圖案等。色彩可以是構成圖案的成分,也可以是構成形狀的部分。
外觀模式:外觀模式就像一個外觀設計師,將那些混亂的形狀,圖案、色彩拼裝成美麗的圖畫。讓後將這美麗的圖畫展現在我們的面前。

現實聯想:

就像這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();
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章