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

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


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




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



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

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

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


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">//子系统类
class SubsystemOne
{
    public void MethodOne()
    {
        Console.writeline("子系统方法一");
    }
}

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

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


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


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">//外观类
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();
    }
}</span></span>


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


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

    Console.Read;
}</span></span>


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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值