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 未本地化版本许可协议  进行许可。

  • 相关阅读:
    百度mp3地址解密码
    VB 在EXE后附加信息
    截屏函数
    Base64和StrToByte
    The Android ION memory allocator, DMABUF is mentioned as well
    DDC EDID 介绍
    Memory management for graphic processors TTM的由来
    科普 写display driver的必看 How video card works [2D的四种主要操作]
    GEM vs TTM
    DMABUF 背景介绍文章 Sharing buffers between devices
  • 原文地址:https://www.cnblogs.com/Aaxuan/p/9602757.html
Copyright © 2011-2022 走看看