外观模式

来源:互联网 发布:1到100全部素数c语言 编辑:程序博客网 时间:2024/06/04 23:37

         师傅说在个人机房重构的时候至少要用到抽象工厂模式和外观模式,那么外观模式一定很基础啦,因此把外观模式总结一下,加深印象,为以后铺好路吧(其实是这周博客不知道写啥了安静

       那么什么是外观模式呢?

       外观模式为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

       外观模式结构图如下:

       

       下面以股民炒股为例来解释外观模式,新股民在没有足够了解证券知识的情况下很容易亏钱,而通过基金由专业经理人管理则是一条很好的选择,在编程中,就是众多股民只和基金打交道,而实际操作交由基金经理人来完成,从而避免了股民和股票耦合性过高的弊端。

namespace 外观模式{    class Program    {        static void Main(string[] args)        {            //股民对股票的购买售出由基金完成            Fund jijin = new Fund();            //基金购买            jijin.BuyFund();            //基金赎回            jijin.SellFund();            Console.Read();        }    }    //股票类    class Stock1    {        //卖股票        public void Sell()        {            Console.WriteLine("股票1卖出");        }        //买股票        public void Buy()        {            Console.WriteLine("股票1买入");        }    }    class Stock2    {        //卖股票        public void Sell()        {            Console.WriteLine("股票1卖出");        }        //买股票        public void Buy()        {            Console.WriteLine("股票1买入");        }    }    class Stock3    {        //卖股票        public void Sell()        {            Console.WriteLine("股票1卖出");        }        //买股票        public void Buy()        {            Console.WriteLine("股票1买入");        }    }    //基金类,了解所有的股票的方法和属性,以备外界调用    class Fund    {        Stock1 gu1;        Stock2 gu2;        Stock3 gu3;        public Fund()        {            gu1 = new Stock1();            gu2 = new Stock2();            gu3 = new Stock3();        }        public void BuyFund()        {            gu1.Buy();            gu2.Buy();            gu3.Buy();        }        public void SellFund()        {            gu1.Sell();            gu2.Sell();            gu3.Sell();        }    }}
         这里的基金类就相当于外观类,充当了一个代理的角色。

      使用:

       1、在设计初期阶段,应该要有意识的将不同的两个层分离,在层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。(不久就要用到了)

       2、在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。

       3、在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,这时可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

0 0