返回
Featured image of post 设计模式 —— 外观模式

设计模式 —— 外观模式

外观模式——让接口更简单

外观模式:Facade /fəˈsɑːd/

  • 目标:
    • 初接触此模式时,熟悉最常用的使用方式。
    • 有更深的理解后,再研究其他使用方法。

1. 基础概念

  • 定义/意图:让接口更简单
    • 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
    • 使用外观模式
      使用外观模式
  • 别名:
  • 类图/结构:
  • 出场嘉宾
    • Facade:外观
      • 知道哪些子系统负责处理哪些请求;
      • 将客户请求代理给适当的子系统;
    • Subsystem Classes:其他子系统类
      • 实现子系统的功能;
      • 处理由 Facede 指派的任务;
      • 没有 Facade 的任何信息;
  • 协作/工作流程
    • 客户 -> Facade -> Subsystem
    • 客户发送请求给 Facede;
    • Facede 将请求适当转发到子系统;
    • 子系统完成请求工作,返回请求结果给 Facede;
    • Facede 返回请求结果给客户;

2. 解决什么问题?如何解决?

  • 降低系统间的通信和相互依赖关系。

3. 优缺点是什么?

3.1 优点

  • 对客户屏蔽子系统组件,减少客户处理得对象数目并使得子系统使用更方便。
  • 实现了子系统和客户之间的松耦合关系。
  • Facade 模式有助于建立层次 结构系统。
  • 如应用需要,可以不限制它们使用子系统类。

3.2 缺点

4. 使用场景是什么?

  • 当需要为一个复杂的子系统提供一个简单接口时;
  • 客户程序与抽象类的实现部分之间存在着较大的依赖性。
    • 引入外观模式将这个子系统与客户一级其他子系统分离,提高子系统的独立性和可移植性。
  • 构建一个层次结构的子系统时,可以用外观模式来定义子系统中每层的入口点。
    • 如果子系统间相互依赖,可以让它们仅通过外观模式进行通讯,从而简化依赖关系。

5. 注意

  • 实现时注意:
    • 降低客户 - 子系统的耦合度。使用抽象类实现Facade它的具体子类对应于不同的子系统实现
    • 公共子系统类与私有子系统类。
      • 子系统公共接口:包含所有用户程序可以访问的类。
      • 子系统私有接口:仅用于对子系统进行扩充。
      • Facade 类是公共接口的一部分。

6. 应用实例?

w. 待办

x. 疑问

y. 拓展

  • 将一个系统划分为多个子系统有利于降低系统的复杂度。
  • 个人理解:这个就类似于 ios 里面的捷径 App,一个捷径可以包含多种操作。

z. 参考

  • 《设计模式:可复用面向对象软件的基础》
  • 《Head First 设计模式》
相信美好的事情即将发生。
Built with Hugo
Theme Stack designed by Jimmy