zoukankan      html  css  js  c++  java
  • FACADE

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

    2 动机,便于不需要更多功能的人通过Facade 简化使用

    3 适用性:

       . 为复杂子系统提供一个简单接口。

       . 客户程序与抽象类的实现部分之间存在着很大的依赖性。Facade提高子系统的独立性

       . 当你需要构建一个层次结构的子系统时,可以仅通过facade通讯,简化之间的依赖性

    4 参与者:

      . Facade:知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象

      . Subsystem classes:实现子系统的功能。处理由Facade对象指派的任务。没有Facade的任何信息,没有指向Facade的指针

    5 协作:

       . 客户通过发送请求给Facade的方式与子系统通讯。

       . 使用Facade的客户不需要直接使用子系统

    6 效果:

       . 对客户屏蔽子系统组件

       . 实现子系统与客户之间的松耦合关系

       . 如果必要,客户可以直接使用子系统

    7 实现:

      1)降低客户-子系统间的耦合度:用抽象类实现Facade而它的具体子类对应于不同的子类系统实现,降低客户与子系统的耦合度

      2)公共子系统与私有子系统

           子系统的公共接口包含所有的客户程序可以访问的类;私有接口仅用于对子系统进行扩充。

    8 相关模式:

       . Abstract Factory 与Facade一起使用以提供一个接口,这一接口可用来以一种子系统独立的方式创建子系统对象。

       . Meidiator与Facade有点像,抽象了一些已有的功能。Mediator是使得同事间的任何通讯进行抽象,通常集中不属于任何单个对象的功能。

         Mediator的同事知道中介者并与它通信,而不是直接与其他同事通信。Facade仅对子系统对象的接口抽象,更易于使用,不定义新功能,子系统也不知道Facade的存在

       . 只需要一个Facade时,使用singleton

  • 相关阅读:
    软件工程——第一次作业
    软件工程结对编程第二次作业
    软件工程结对编程第一次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    阿里云服务器ECS WindowsServer2016配置IIS遇到的坑
    微信小程序跳坑指南——小程序上线半年后遇到的坑总结
    VS2013 RC 此模板尝试加载组件程序集 “NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral.........
    Mysql主从复制原理及配置
  • 原文地址:https://www.cnblogs.com/criticalsection/p/5717708.html
Copyright © 2011-2022 走看看