我与大话设计模式之代码篇(四)-----外观模式

    外观就是门面,所以外观模式也叫作门面模式,当看到书上的门面模式的时候我就想家了,想念家里的门,家里的人儿们。


    外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。看完定义就来看看我理解的外观模式吧,大话书上是以客户买股票和买基金进而买股票对比的,下面看一下客户直接买股票的结构图:


我与大话设计模式之代码篇(四)-----外观模式_第1张图片


    看到这个图我们是不是想到了我们自己,我们就是客户,下面的股票就是各类物品,我们想要啥就根据自己的意愿去买,无需考虑太多,如果有人要求我们班集体每个人都去买,如果我们不懂得省力,而非得要自己尽心尽力看一个个买,我们是不是很费劲,费时间的呢,如果我们安排一部分人组成一个小组去购买特定类的物品,那样我们买的东西没有那么多的属性和特点,是不是就更加容易了呢,这个和客户买基金,托管基金去买股票是一样的道理,因为我们最终的目的很简单,就是赚“Money”。下面来看一下买基金的结构图,和我们自己直接买股票对比一下:

我与大话设计模式之代码篇(四)-----外观模式_第2张图片


    看出大的区别了吗,这就教会了我们要懂得分析和分配。通过一个统一的途径达到一样的目的,省时省力。

    还有一个例子,开头时候小编说过想念家里的门了,无缘无故小编是不会思念家乡的,在这里当然是有寓意的啦。一般咱们家里都有大门、小门。就算没有大门,城市里一般都有好几个屋,然后有总门,有防盗门。这里的股票、国债、房地产等等就相当于小门,而基金就相当于咱们家的大门(防盗门),我们就是那个客户,如果咱们有事外出需要锁门,我们最应该先锁住的就是咱家的防盗门,这是最关键的,如果没有什么特殊情况小门就没有锁住的必要了,除非那个小门里有保险箱,哈哈。到此咱们就大概了解了外观模式了。下面跟着小编来看一下外观模式的代码模式吧:

子系统类的代码,此处是有几个子系统类就写几个子系统的类就OK了。


//子系统类
class SubsystemOne
{
    public void MethodOne()
    {
        Console.writeline("子系统方法一");
    }
}

class SubsystemTwo
{
    public void MethodTwo()
    {
        Console.writeline("子系统方法二");
    }
}

class SubsystemThree
{
    public void Methodthree()
    {
        Console.writeline("子系统方法三");
    }
}


对应的外观类=知道大门的模样和锁住的办法,别锁错门了。


//外观类
class Facade
{
    SubSystemOne one;
    SubSystemTwo two;
    SubSystemThree three;

    public Facade()
    {
        one=new SubsystemOne();
        two=new SubsystemTwo();
        three=new SubsystemThree();   
    }

    pubblic void MethodA() //了解子系统的方法和属性,进行组合,即大门是正常锁还是反锁
    {
         Console.Writeline("\n方法组A()---");
         one.MethodOne();
         two.MethodTwo();
    }
    pubblic void MethodB()
    {
         Console.Writeline("\n方法组B()---");
         two.MethodTwo();
         three.MethodThree();
    }
}


客户端代码=利用门的方法和属性,锁住门。


//客户端
static void Main(string[] args)
{
    Facade facade=new Facade();
    //有了外观模式,客户端就不用知道三个子系统类的存在,即锁住大门,别人不知道我家里有几个小门,但是开开大门,小门就一目了然
    facade.MethodA();
    facade.MethodB();

    Console.Read;
}


    外观模式的模型就是这样了,例子小编也不知道讲解的到不到位,若果有意见希望看到该文章的小伙伴们给我提出,以便于我的提高和成长。



你可能感兴趣的:(【设计模式学习】)