我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Facade外观模式怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Facade外观模式怎么实现

本文小编为大家详细介绍“Facade外观模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Facade外观模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Facade(外观模式)

Facade(外观模式)属于结构型模式,是一种日常开发中经常被使用到的设计模式。

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

举例子

如果看不懂上面的意图介绍,没有关系,设计模式需要在日常工作里用起来,结合例子可以加深你的理解,下面我准备了三个例子,让你体会什么场景下会用到这种设计模式。

意图解释

图书管理员

图书馆是一个非常复杂的系统,虽然图书按照一定规则摆放,但也只有内部人员比较清楚,作为一位初次来的访客,想要快速找到一本书,最好的办法是直接问图书管理员,而不是先了解这个图书馆的设计,因为你可能要来回在各个楼宇间奔走,借书的流程可能也比较长。

图书管理员就起到了简化图书馆子系统复杂度的作用,我们只要凡事询问图书管理员即可,而不需要关心他是如何与图书馆内部系统打交道的。

最多跑一次便民服务

浙江省推出的最多跑一次服务非常方便,很多办事流程都简化了,无论是证件办理还是业务受理,几乎只要跑一次,而必须要持续几天的流程也会通过手机短信或者 App 操作完成后续流程。

这就相当于外观模式,因为政府系统内部的办事流程可能没有太大变化,但通过抽象出 Facade(外观),让普通市民可以直接与便民办事处连接,而不需要在车管所与驾校之间来回奔波,背后的事情没有少,只是便民办事处帮你做了。

Iphone 快捷指令功能

手机的 App 非常多,而我们需要了解每个功能在哪个 App 上才能运用自如,而快捷指令功能可以将 App 的某些功能单独提取出来,形成一套新的功能组,我们可以只接触到 “拍照” “付款” “计算”,而不用管背后是调用了支付宝还是微信、系统内置摄像机还是其他摄像 App,也不用关心这个 App 内部功能的入口在哪里,这些对接都在快接指令中自动完成。

快捷指令也是一种外观模式。

意图解释

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

为降低一个拥有多个接口的子系统内部复杂性,我们需要一个外观来屏蔽内部的复杂性,因此外观模式就是定义一个高层接口,这个接口直连子系统的内部实现,但调用这个高层接口的人不需要关心子系统内部的实现,这样,对于不想了解子系统内部实现的人来说,提高了易用度。

当然如果想要深度定制,就可以绕过外观模式,直接使用子系统提供的类,所以说并不是有了外观模式就必须通过外观调用,而是根据实际需要判断使用哪种调用方式。

结构图

可以看到,Facade 直接指向子系统中的类,而子系统的类不会反向指向 Facade。

代码例子

下面例子使用 typescript 编写。

// 假设一个子系统是三个类结合使用的,为了抽象而解耦开了

class A {

  constructor(b: B) {

    this.b = b

  }

}

class B {

  constructor(c: C) {

    this.c = c

  }

}

class C {

}

// 它们组合成了一种常用功能,我们可以使用外观模式屏蔽子类的细节直接使用

class Compile {

  public run() {

    const parser = new A(new B(new C))

    parser.run()

  }

}

const compile = new Compile()

compile.run()

这样我们只要知道 Compile 类就可以了,而不需要了解背后的 A B C 以及其组合关系。

弊端

外观模式并不适合于所有场景,当子系统足够易用时,再使用外观模式就是画蛇添足。

另外,当系统难以抽象出通用功能时,外观模式的设计可能也无所适从,因为设计的高层接口可能适用范围很窄,此时外观模式的意义就比较小。

读到这里,这篇“Facade外观模式怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Facade外观模式怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JAVA外观模式怎么实现

这篇文章主要介绍了JAVA外观模式怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JAVA外观模式怎么实现文章都会有所收获,下面我们一起来看看吧。外观(Facade)模式又叫作门面模式,是一种通过为多个复
2023-07-02

PHP结构型模式之外观模式怎么实现

这篇文章主要讲解了“PHP结构型模式之外观模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP结构型模式之外观模式怎么实现”吧!外观模式(Facade Pattern)是什么外观
2023-07-05

Golang设计模式之外观模式的实现

这篇文章主要介绍了Golang设计模式之外观模式的实现,外观模式是一种常用的设计模式之一,是一种结构型设计模式,它提供了一个简单的接口来访问复杂系统的各种功能,从而降低了系统的复杂度,需要详细了解可以参考下文
2023-05-20

java观察者模式怎么实现

要实现观察者模式,你可以按照以下步骤进行:定义观察者接口(Observer):该接口应该包含一个方法,用于接收被观察者的通知。public interface Observer {void update();}定义被观察者接口(Subje
2023-10-27

golang观察者模式怎么实现

在Go语言中,可以使用接口和通道来实现观察者模式。首先,定义一个观察者接口,其中有一个更新方法,用于接收被观察者的通知:gotype Observer interface {Update(string)}接下来,定义一个被观察者结构体,其中
2023-10-20

PHP设计模式之观察者模式怎么实现

这篇文章主要介绍“PHP设计模式之观察者模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP设计模式之观察者模式怎么实现”文章能帮助大家解决问题。PHP观察者模式(Observer Pa
2023-07-05

怎么用Javascript实现观察者模式

本篇内容主要讲解“怎么用Javascript实现观察者模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Javascript实现观察者模式”吧!什么是观察者模式?观察者模式一种设计模式。观
2023-06-21

怎样理解NET设计模式实例中的外观模式

本篇文章给大家分享的是有关怎样理解NET设计模式实例中的外观模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、外观模式简介(Brief Introduction)外观模式,
2023-06-17

JavaScript设计模式中的观察者模式怎么实现

本文小编为大家详细介绍“JavaScript设计模式中的观察者模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript设计模式中的观察者模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-07-02

JAVA怎样实现观察者模式

这篇文章将为大家详细讲解有关JAVA怎样实现观察者模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念观察者模式又叫做发布-订阅模式,是对象间的一对多的关系,当一个对象的状态发生改变时,所有依赖于它的对
2023-06-29

C#中的EventHandler观察者模式怎么实现

这篇文章主要介绍“C#中的EventHandler观察者模式怎么实现”,在日常操作中,相信很多人在C#中的EventHandler观察者模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中的Eve
2023-06-29

golang观察者模式实现的代码怎么写

在Go语言中实现观察者模式,可以按照以下步骤进行:定义主题(Subject)接口,包含以下方法:type Subject interface {Register(observer Observer) // 注册观察者Unregiste
2023-10-23

php如何实现观察者模式

这篇文章主要介绍了php如何实现观察者模式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php实现观察者模式的方法:首先创建一个PHP示例文件;然后实现观察者向主题注册;最后
2023-06-14

Golang Facade模式实现思路与实际案例分享

Golang中的Facade模式可以通过封装复杂的子系统,提供一个简单的接口来实现。该模式可以隐藏子系统的复杂性,使得客户端可以更加方便地使用子系统的功能。在Golang中,可以通过创建一个外观接口来实现Facade模式。这个接口应该定义一
2023-10-08

优雅实现Golang Facade模式,提升工程质量

在Golang中实现Facade模式可以帮助提升代码的可读性和可维护性。Facade模式通过提供一个统一的接口来隐藏底层子系统的复杂性,让客户端可以更方便地使用这些功能。下面是一个简单的示例,展示了如何使用Facade模式来封装一个计算器的
2023-10-08

Golang Facade模式的设计思想与实现原理

Golang中的Facade模式是一种结构型设计模式,它提供了一个统一的接口,用于隐藏子系统的复杂性,使得子系统更容易使用。Facade模式通过提供一个简单的接口来封装一些复杂的操作,使得客户端可以更方便地与子系统交互。实现Facade模式
2023-10-08

编程热搜

目录