zoukankan      html  css  js  c++  java
  • 设计模式学习笔记外观模式

    概述:                                                                                                      

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

    应用场合:                                                                                                

    1.当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子类的的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。

    2.客户端程序与抽象类的实现部分存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。

    3.当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统的每层的入口点。如果子系统之间是相互依赖的,你可以让他们仅通过facade进行通讯,从而简化了他们之间的依赖关系。

    类图:                                                                                                       

    代码示例:                                                                                                 

    1.定义子系统

        class SubsystemOne
    {
    public void MethodOne()
    {
    Console.WriteLine(
    "子系统方法一");
    }
    }
    class SubsystemTwo
    {
    public void MethodTwo()
    {
    Console.WriteLine(
    "子系统方法二");
    }
    }
    class SubsystemThree
    {
    public void MethodThree()
    {
    Console.WriteLine(
    "子系统方法三");
    }
    }
    class SubsystemFour
    {
    public void MethodFour()
    {
    Console.WriteLine(
    "子系统方法四");
    }
    }

    2.定义门面

     class Facade
    {
    SubsystemOne one;
    SubsystemTwo two;
    SubsystemThree three;
    SubsystemFour four;

    public Facade()
    {
    one
    = new SubsystemOne();
    two
    = new SubsystemTwo();
    three
    = new SubsystemThree();
    four
    = new SubsystemFour();
    }
    public void MethodA()
    {
    Console.WriteLine(
    "\n 方法组A()-----");
    one.MethodOne();
    two.MethodTwo();
    four.MethodFour();
    }
    public void MethodB()
    {
    Console.WriteLine(
    "\n 方法组B()-----");

    two.MethodTwo();
    three.MethodThree();
    }
    }

    3.客户端调用

            /// <summary>
    /// 测试外观模式
    /// </summary>
    static void TestFacade()
    {
    Facade facade
    = new Facade();
    facade.MethodA();
    facade.MethodB();
    Console.Read();
    }

    小结:                                                                                                      

    外观模式其实就是把子系统的多个执行流程统一用一个方法去调用,这个方法实际操作当中用的很多,比如定义一个子程序,这儿的子程序就是执行别的多个子程序,就算是外观模式了,不限于面向对象。

  • 相关阅读:
    网络爬虫之第一章网络请求
    rabbitmq学习(一) —— 安装篇
    jenkins自动构建部署
    httpclient初步封装
    谈谈“拥抱变化”
    mongo对分组数据进行排序
    困兽
    go语言——goland中项目目录及编译说明
    最长回文子串
    java中关于锁知识的整理
  • 原文地址:https://www.cnblogs.com/jqbird/p/2148983.html
Copyright © 2011-2022 走看看