外观模式

一,理解:

1,书上的说法:

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

2,我自己的理解:

简化客户端的代码,可以一次性调用很多方法

二,用法:

1,什么时候用?

(1)在开发阶段,子系统因为不断重构演化而越来越复杂,当在客户端调用的时候比较多的时候增加,方便调用。

(2)在维护一个遗留的大型系统的时候,可以通过外观模式与遗留代码交互所有复杂的工作。

2,如何用?

在系统和客户端之间添加一个外观类,使外观类和客户端之间耦合

3,重点是什么?

外观类的敲定,在外观类中将代码进行分类,从而使代码能够减少复杂性

4,优秀点是什么?

(1)优点:

  • 提高灵活性
  • 方便客户端的调用

(2)缺点:

  • 不符合开闭原则,需要改的时候会很麻烦

4,相关举例

(1)公司来新人的时候,有很多的流程,例如领电脑,分座位,去人事处报告等等,所以需要有一个主管来管理这些新人以供他们找到正确的地方

(2)三层架构的时候,每一层之间都会建立外观模式

三,代码展示:

以下是书上的例子:

有关买股票

股票:股票1,股票2,股票3,国债1,房地产1

方法:买,卖

1,写出所有的类:

class Stock1
    {
        public void Sell()
        {
            Console.WriteLine("卖出股票1");
        }
        public void Buy()
        {
            Console.WriteLine("买入股票1");
        }
    }
    class Stock2
    {

        public void Sell()
        {
            Console.WriteLine("卖出股票2");
        }
        public void Buy()
        {
            Console.WriteLine("买入股票2");
        }

    }
    class Stock3
    {

        public void Sell()
        {
            Console.WriteLine("卖出股票2");
        }
        public void Buy()
        {
            Console.WriteLine("买入股票2");
        }

    }
    class NationalDebt
    {

        public void Sell()
        {
            Console.WriteLine("卖出国债");
        }
        public void Buy()
        {
            Console.WriteLine("买入国债");
        }

    }
    class Realty
    {

        public void Sell()
        {
            Console.WriteLine("卖出房地产");
        }
        public void Buy()
        {
            Console.WriteLine("买入房地产");
        }

    }

2,把所有类的方法放到一个相同的方法中,如下

class funt
    {
        Stock1 one;
        Stock2 two;
        Stock3 three;
        NationalDebt four;
        Realty five;
        public funt ()
        {
            one = new Stock1();
            two = new Stock2();
            three = new Stock3();
            four = new NationalDebt();
            five = new Realty();
        }
        public void Sell()
        {
            one.Sell();
            two.Sell();
            three.Sell();
            four.Sell();
            five.Sell();
        }
        public void Buy()
        {
            one.Buy();
            two.Buy();
            three.Buy();
            four.Buy();
            five.Buy();
        }
 
    }

3,客户端的代码:

static void Main(string[] args)
        {
            funt haha = new funt();
            haha.Buy();
            haha.Sell();
            Console.ReadKey();
        }

4,结果:

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值