• 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

  • 相关阅读:
    Linux机器学习软件配置
    安装linux14.04
    Navicat无法连接SqlServer数据库
    linux命令行安装teamviewer
    Ubuntu14.04+Dell 7060安装无线/有线网络驱动
    启动一个SpringBoot的maven项目
    HTML5新增特性
    HTML 表格|表单
    HTML 基础
    初识 wijmo-grid
  • 原文地址:https://www.cnblogs.com/criticalsection/p/5717708.html
Copyright © 2020-2023  润新知