新疆软件开发

本站首页 软件开发 成功案例 公司新闻 公司简介 客服中心 软件技术 网站建设
  您现在的位置: 新疆二域软件开发公司 >> .Net技术 >> 文章正文

Facade Pattern学习总结


 

  首先,Façade模式的作用是什么?简化接口。比如我们买电脑,当电脑店店员把机子组装好后交给我们,我们拿回家把显示器键盘等的插头都插到机箱后面,然后用电脑时只要按一下主机箱上的电源,电脑就启动了,我们无需关心机箱内部各个部件是如何启动,是CPU先过电还是硬盘先过电。在这里,这个机箱就可以认为是一个Façade,这个Façade(机箱)就使启动电脑变得很容易,就算是一个完全不懂电脑的人,也知道如何启动电脑了。这就是Façade最大作用所在:简化接口,使得客户程序(人)更方便地使用子系统(电脑)。试想,如果没有机箱,那我们想启动电脑岂不是得去记先启动CPU还是先启动硬盘?要怎么启动它们?同时,Façade也让系统耦合度更低,因为你不需要直接跟CPU、硬盘等直接接触了。

接下来就用代码示例一下:
下面是几个电脑配件类,它们都有一个Run()方法和一个Stop()方法,分别表示它们的启动和关闭:
            //CPU
       internal class CPU {
       public void Run() {

           Console.WriteLine("Cpu is running...");

       }

       public void Stop() {

           Console.WriteLine("Cpu stopped.");

       }

    }

    //主板
        internal class MainBoard {

       public void Run() {

           Console.WriteLine("MainBoard is running...");

       }

       public void Stop() {

           Console.WriteLine("MainBoard stopped.");

       }

    }

    //硬盘
       internal class HardDisk {

       public void Run() {

           Console.WriteLine("HardDisk is running...");

       }

       public void Stop() {

           Console.WriteLine("HardDisk stopped.");

       }

    }

    //内存
       internal class Memory {

       public void Run() {

           Console.WriteLine("Memory is running...");

       }

       public void Stop() {

           Console.WriteLine("Memory stopped.");

       }

    }

    //电源
       internal class Power {

       public void Run() {

           Console.WriteLine("Power is running...");

       }

       public void Stop() {

           Console.WriteLine("Power stopped");

       }

    }

然后是个主机类(Facade):

       /// <summary>
       /// 电脑主机(Façade(外观)类)
       /// </summary>
       public class HostComputerFacade {

       private CPU cpu;

       private MainBoard mainBoard;

       private HardDisk hardDisk;

       private Memory memory;

       private Power power;      

       //构造方法,初始化各个配件
          public HostComputerFacade() {

           cpu = new CPU();

           mainBoard = new MainBoard();

           hardDisk = new HardDisk();

           memory = new Memory();

           power = new Power();

       }

       //启动电脑,我不知道各配件的启动顺序如何,我们不妨假设它们就按如下顺序启动
            public void TurnOn() {

           power.Run();

           mainBoard.Run();

           cpu.Run();

           memory.Run();

           hardDisk.Run();

       }

       //关闭电脑
            public void ShutDown() {

           hardDisk.Stop();

           memory.Stop();

           cpu.Stop();

           mainBoard.Stop();

           power.Stop();

       }

    }

  然后我们就可以在Main()方法中使用“电脑”了:

          public static void Main(string[] args) {

           HostComputerFacade hcf = new HostComputerFacade();

          

           hcf.TurnOn();

           //…这里做一些使用电脑的操作

           hcf.ShutDown();
          }

Look,客户程序要是想“使用电脑”的话,只要实例化主机,然后按下电源开关(TurnOn()),相箱内各部件就自动按顺序启动了,再长按电源开关几秒钟(ShutDown()),机箱内各部件就按顺序停止了,而如果没有这个HostComputerFacade类的话,我们就要亲自动手让Power启动、再让MainBoard启动,然后再让CPU启动…,关的时候也要先让HardDisk停止,再让Memory停止…,那岂不太麻烦了,对吧?

总 结:
Facade模式的作用就在于简化接口,同时更松耦合,而各个子系统之间一般是联系比较紧的,就像机箱内的各配件,在某种意义上说,它们之间的联系是挺紧的。


 

作者:未知 | 文章来源:cnblogs | 更新时间:2008-3-23 13:05:40

  • 上一篇文章:

  • 下一篇文章:

  • 相关文章:
    没有相关文章
    软件技术
    · 开发语言
    · Java技术
    · .Net技术
    · 数据库开发
    最新文章  
    ·.net技术 asp.net MVC3 Vi
    ·.net将视频文件格式转换成
    ·NET Framework 2.0 Servic
    ·如何动态修改winform的app
    ·asp,net软件结构设计和相关
    ·学习怎样使用ASP.NET中的虚
    ·,net基础类的学习:system
    ·.net学习:c#事件的深入分
    ·Facade Pattern学习总结
    ·C#如何设置或者获取目录的
    ·如何使用XSL来定义ASP.NET
    ·理解WCF Data Contract契约
    ·如何能在.net2.0开发的控件
    ·模式怎样使用,讲解模式的
    ·如何解决Menu菜单被frame遮
    关于我们 | 软件开发 | 下载试用 | 客服中心 | 联系我们 | 友情链接 | 网站地图 | 新疆电子地图 | RSS订阅
    版权所有 © 2016 新疆二域软件开发网 www.k8w.net All Rights Reserved 新ICP备14003571号
    新疆软件开发总机:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆乌鲁木齐北京中路华联大厦A-5C 邮编:830000