外观模式:

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


结构图:

                                     

代码实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 外观模式
{

    class stock1
    {
        public void Sell()
        {
            Console.WriteLine("股票1卖出!");
        }
        public void Buy()
        {
            Console.WriteLine("股票1 买!");
        }
    }
    class NationalDebt1
    {
        public void Sell()
        {
            Console.WriteLine("国债1 卖出!");
        }
        public void Buy()
        {
            Console.WriteLine("国债1 买!");
        }
    }
    class Realty
    {
        public void Sell()
        {
            Console.WriteLine("房地产1 卖出!");
        }
        public void Buy()
        {
            Console.WriteLine("房地产1 买!");
        }
    }
    class Fund
    {
        stock1 gu1;
        NationalDebt1 gu2;
        Realty gu3;

        public Fund()
        {
            gu1 = new stock1();
            gu2 = new NationalDebt1();
            gu3 = new Realty();
        }

        public void BuyFund()
        {
            gu1.Buy();
            gu2.Buy();
            gu3.Buy();
        }
        public void SellFund()
        {
            gu1.Sell();
            gu2.Sell();
            gu3.Sell();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Fund fund = new Fund();
            fund.BuyFund();
            fund.SellFund();
            Console.ReadKey();
        }
    }
}

使用场景:

    1 设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
    2 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。

    3  维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类, 以便新系统与其交互

总结:

  外观模式完美的体现了依赖倒转和迪米特法则,感觉这个模式挺重要的。


本文转载:CSDN博客