设计模式之外观模式

定义:

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

UML图:

设计模式之外观模式_第1张图片
例子:
 这是设计模式书上的例子,股民炒股,股民投资炒股,

    基金类:

 class Fund
    {
        Stock1 gu1;
        Stock2 gu2;
        Stock3 gu3;
        NationalDebt1 nd1;
        Realty1 rt1;
        public Fund ()
        {
            gu1 = new Stock1();
            gu2 = new Stock2();
            gu3 = new Stock3();
            nd1 = new NationalDebt1();
            rt1 = new Realty1();
        }

        public void BuyFund()
        {
            gu1.Buy();
            gu2.Buy();
            gu3.Buy();
            nd1.Buy();
            rt1.Buy();
        }

        public void SellFund()
        {
            gu1.Sell();
            gu2.Sell();
            gu3.Sell();
            nd1.Sell();
            rt1.Sell();
        }
    }

  国债类:

 class NationalDebt1
    {
        //卖国债
        public void Sell()
        {
            Console.WriteLine(" 国债1卖出");
        }

        //买国债
        public void Buy()
        {
            Console.WriteLine(" 国债1买入");
        }
    }

  房地产类:

 class Realty1
    {
        //卖房地产
        public void Sell()
        {
            Console.WriteLine(" 房地产1卖出");
        }

        //买房地产
        public void Buy()
        {
            Console.WriteLine(" 房地产1买入");
        }
    }

  股票1:

class Stock1
    {
        //卖股票
        public void Sell()
        {
            Console.WriteLine(" 股票1卖出");
        }

        //买股票
        public void Buy()
        {
            Console.WriteLine(" 股票1买入");
        }
    }

  股票2、3同股票1代码。

  客户端代码:

 Fund jijin = new Fund();
            //基金购买
            jijin.BuyFund();

            //基金赎回
            jijin.SellFund();

            Console.Read();

  外观模式什么时候使用?

  设计初期阶段,有意识将不同的两个层分离层与层之间建立外观Facade;

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

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

   总结:

  通过外观模式可以降低子系统与客户端的耦合程度,使用起来更方便!
   

 

你可能感兴趣的:(设计模式)