外观模式

外观:

外观就是给予我们视觉上的最直接的感受,是指形状、图案、色彩或其结合;
形状是指三维产品的造型,如电视机、小汽车的外形。图案一般是指两维的平面设计,如床单、地毯的图案等。色彩可以是构成图案的成分,也可以是构成形状的部分。
外观模式:外观模式就像一个外观设计师,将那些混乱的形状,图案、色彩拼装成美丽的图画。让后将这美丽的图画展现在我们的面前。

现实联想:

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