zoukankan      html  css  js  c++  java
  • 设计模式 结构型模式 外观模式(Facade Pattern)

    在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化。

    这时为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模式。

    隐藏系统的复杂性,

    并向客户端提供了一个客户端可以访问系统的接口。

    这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

    这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。


    意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

    主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

    何时使用:

    • 客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。
    • 定义系统的入口。

    优点:

    • 外观模式对客户屏蔽了子系统组件,从而简化了接口,减少了调用端处理的对象数目并使子系统的使用更加简单。
    • 外观模式实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件是紧耦合的。松耦合使得子系统的组件变化不会影响到它的调用端,提高了灵活性。

    缺点:

    • 不符合开闭原则,若子系统增加新组件,则外观类与调用端都有可能被修改。

    使用场景:

    • 为复杂的模块或子系统提供外界访问的模块。
    • 子系统相对独立。
    • 预防低水平人员带来的风险。

    注意事项:

    • 在层次化结构中,可以使用外观模式定义系统中每一层的入口。

    实现

     1     public class Facade
     2     {
     3         public void AddXXX()
     4         {
     5             var subsystem1 = new Subsystem1();
     6             subsystem1.Check();
     7             subsystem1.Insert();
     8 
     9             var subsystem2 = new Subsystem2();
    10             subsystem2.Notice();
    11         }
    12     }
    13 
    14     public class Subsystem1
    15     {
    16         public void Check()
    17         { Console.WriteLine("正在检查..."); }
    18 
    19         public void Insert()
    20         { Console.WriteLine("正在添加..."); }
    21     }
    22 
    23     public class Subsystem2
    24     {
    25         public void Notice()
    26         { Console.WriteLine("正在通知..."); }
    27     }
    1         private static void Main(string[] args)
    2         {
    3             var core = new Facade(); 
    4             core.AddXXX();
    5             Console.ReadLine();
    6         }


    转载请标明出处

    作者:AaXuan

    地址:http://www.cnblogs.com/Aaxuan

    知识共享许可协议

    本作品采用  知识共享署名 3.0 未本地化版本许可协议  进行许可。

  • 相关阅读:
    20135315宋宸宁信息安全系统设计基础期末总结
    信息安全系统设计基础第十四周学习总结
    树莓派之web服务器搭建
    读书笔记——《图解TCP/IP》(2/4)
    信息安全系统设计基础第十三周学习总结
    读书笔记——《图解TCP/IP》(1/4)
    读书笔记——《暗时间》汇总
    信息安全系统设计基础第十二周学习总结
    20135315 宋宸宁 、20135333 苏正生——实验3
    读书笔记——《暗时间》(2/2)
  • 原文地址:https://www.cnblogs.com/Aaxuan/p/9602757.html
Copyright © 2011-2022 走看看