美文网首页
结构型-Facade

结构型-Facade

作者: acc8226 | 来源:发表于2021-06-26 00:31 被阅读0次

门面模式的原理与实现

门面模式,也叫外观模式,英文全称是 Facade Design Pattern。在 GoF 的《设计模式》一书中,门面模式是这样定义的:

Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern defines a higher-level interface that makes the subsystem easier to use.

翻译成中文就是:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。

类图

门面模式的应用场景举例

在 GoF 给出的定义中提到,“门面模式让子系统更加易用”,实际上,它除了解决易用性问题之外,还能解决其他很多方面的问题。关于这一点,我总结罗列了 3 个常用的应用场景,你可以参考一下,举一反三地借鉴到自己的项目中。

除此之外,我还要强调一下,门面模式定义中的“子系统(subsystem)”也可以有多种理解方式。它既可以是一个完整的系统,也可以是更细粒度的类或者模块。关于这一点,在下面的讲解中也会有体现。

  1. 解决易用性问题
    门面模式可以用来封装系统的底层实现,隐藏系统的复杂性,提供一组更加简单易用、更高层的接口。比如,Linux 系统调用函数就可以看作一种“门面”。它是 Linux 操作系统暴露给开发者的一组“特殊”的编程接口,它封装了底层更基础的 Linux 内核调用。再比如,Linux 的 Shell 命令,实际上也可以看作一种门面模式的应用。它继续封装系统调用,提供更加友好、简单的命令,让我们可以直接通过执行命令来跟操作系统交互。我们前面也多次讲过,设计原则、思想、模式很多都是相通的,是同一个道理不同角度的表述。实际上,从隐藏实现复杂性,提供更易用接口这个意图来看,门面模式有点类似之前讲到的迪米特法则(最少知识原则)和接口隔离原则:两个有交互的系统,只暴露有限的必要的接口。除此之外,门面模式还有点类似之前提到封装、抽象的设计思想,提供更抽象的接口,封装底层实现细节。

  2. 解决性能问题
    关于利用门面模式解决性能问题这一点,刚刚我们已经讲过了。我们通过将多个接口调用替换为一个门面接口调用,减少网络通信成本,提高 App 客户端的响应速度。所以,关于这点,我就不再举例说明了。我们来讨论一下这样一个问题:从代码实现的角度来看,该如何组织门面接口和非门面接口?如果门面接口不多,我们完全可以将它跟非门面接口放到一块,也不需要特殊标记,当作普通接口来用即可。如果门面接口很多,我们可以在已有的接口之上,再重新抽象出一层,专门放置门面接口,从类、包的命名上跟原来的接口层做区分。如果门面接口特别多,并且很多都是跨多个子系统的,我们可以将门面接口放到一个新的子系统中。

  3. 解决分布式事务问题
    关于利用门面模式来解决分布式事务问题,我们通过一个例子来解释一下。在一个金融系统中,有两个业务领域模型,用户和钱包。这两个业务领域模型都对外暴露了一系列接口,比如用户的增删改查

参考

设计模式之美设计模式代码重构-极客时间
https://time.geekbang.org/column/intro/250

相关文章

  • 结构型-Facade

    门面模式的原理与实现 门面模式,也叫外观模式,英文全称是 Facade Design Pattern。在 GoF ...

  • Facade模式(结构型)

    Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个...

  • 结构型模式:外观模式

    文章首发:结构型模式:外观模式 七大结构型模式之五:外观模式。 简介 姓名 :外观模式 英文名 :Facade P...

  • 结构型-外观模式facade

    定义 外观模式是典型的迪米特法则(最少知道原则)。是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更...

  • 结构型模式5-外观模式

    结构型模式5-外观模式 外观模式Facade 意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了...

  • Android设计模式——外观模式(七大结构型)

    1.外观模式介绍 外观模式(Facade Pattern),是七大结构型设计模式之一。 外观模式运...

  • Facade 外观模式(结构型模式)

    介绍   为子系统的一组接口提供一个一致的界面,Facade模式定义了一个高层的接口,这使得子系统更加容易使用。 ...

  • 设计模式—外观模式

    今天我们来学习另一种结构型模式,它就是外观模式(Facade Pattern)。 模式定义 外部与一个子系统的通信...

  • 必知必会的设计模式9

    外观模式(Facade Pattern) 属结构型设计模式,「要求一个子系统的外部与其内部的通信必须通过一个统一的...

  • 2019-04-11 软件设计师 设计模式

    结构型模式(外桥组元代饰配) 一)外观模式(Facade) 定义:为子系统中一组不同的接口提供统一的接口适用:1....

网友评论

      本文标题:结构型-Facade

      本文链接:https://www.haomeiwen.com/subject/qrdtyltx.html