您的位置:首页 > 编程语言

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

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

    外观模式(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>


    外观模式的模型就是这样了,例子小编也不知道讲解的到不到位,若果有意见希望看到该文章的小伙伴们给我提出,以便于我的提高和成长。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: