zoukankan      html  css  js  c++  java
  • 外观模式

    Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。在这里我想举一个例子:比如,现在有一辆汽车,我们(客户程序)要启动它,那我们就要发动引擎(子系统1),使四个车轮(子系统2)转动。但是实际中我们并不需要用手推动车轮使其转动,我们踩下油门,此时汽车再根据一些其他的操作使车轮转动。油门就好比系统给我们留下的接口,不论汽车是以何种方式转动车轮,车轮变化成什么牌子的,我们要开走汽车所要做的还是踩下油门。

    GoF《设计模式》中说道:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

    代码1:各种子组件

        //股票1
        class Stock1
        {
            //卖股票
            public void Sell()
            {
                Console.WriteLine(" 股票1卖出");
            }
    
            //买股票
            public void Buy()
            {
                Console.WriteLine(" 股票1买入");
            }
        }
    
        //股票2
        class Stock2
        {
            //卖股票
            public void Sell()
            {
                Console.WriteLine(" 股票2卖出");
            }
    
            //买股票
            public void Buy()
            {
                Console.WriteLine(" 股票2买入");
            }
        }
    
        //股票3
        class Stock3
        {
            //卖股票
            public void Sell()
            {
                Console.WriteLine(" 股票3卖出");
            }
    
            //买股票
            public void Buy()
            {
                Console.WriteLine(" 股票3买入");
            }
        }
    
        //国债1
        class NationalDebt1
        {
            //卖国债
            public void Sell()
            {
                Console.WriteLine(" 国债1卖出");
            }
    
            //买国债
            public void Buy()
            {
                Console.WriteLine(" 国债1买入");
            }
        }
    
        //房地产1
        class Realty1
        {
            //卖房地产
            public void Sell()
            {
                Console.WriteLine(" 房产1卖出");
            }
    
            //买房地产
            public void Buy()
            {
                Console.WriteLine(" 房产1买入");
            }
        }
    

    代码2:聚合子组件的外观组件

       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();
            }
    
        }
    

    代码3:客户端代码

    class Program
        {
            static void Main(string[] args)
            {
    
                Fund jijin = new Fund();
    
                jijin.BuyFund();
                jijin.SellFund();
    
                Console.Read();
    
            }
        }
    

      

  • 相关阅读:
    Linux开发初探
    Linux开发初探
    电脑使用说明书
    电脑使用说明书
    Delegates, Events, and Anonymous Methods 委托、事件与匿名方法
    CSS haslayout
    js与flash结合使用
    sgen.exe" exited with code 1.解决方法
    selenium
    selenium支付高版本的FireFox
  • 原文地址:https://www.cnblogs.com/wuMing-dj/p/3358899.html
Copyright © 2011-2022 走看看