首页 > 其他分享 >“接口隔离模式”之外观模式(门面模式)

“接口隔离模式”之外观模式(门面模式)

时间:2023-12-03 17:26:46浏览次数:32  
标签:外观 客户程序 模式 接口隔离 Facade 接口 门面 子系统

1 模式动机

外观模式属于“接口隔离模式”的一种。

  

下图中,A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。

如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦?

使用B方案的好处:无论系统内部如何变化,对外的接口(Facade)是没有变化的。

 

2 模式定义

 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。

 

3 模式结构

外观模式包含如下角色:

  • Facade: 外观角色
  • SubSystem:子系统角色

../_images/Facade.jpg

 

4 总结

Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式。

Facade模式是一种思想,因此这里就不贴出具体示例的代码了。

标签:外观,客户程序,模式,接口隔离,Facade,接口,门面,子系统
From: https://www.cnblogs.com/spacerunnerZ/p/17873416.html

相关文章

  • 设计模式
    设计模式分创建型、结构型、行为型模式,以下是详述创建型模式隐藏了创建对象的过程,通过逻辑方法创建对象,而不是通过new关键字*工厂方法模式*抽象工厂模式*单例模式*建造者模式*原型模式结构型模式主要关注类和对象的组合关系继承的概念......
  • JavaScript的设计模式—构造器模式
    设计模式介绍设计模式是我们在解决问题的时候针对特定问题给出的简洁而优化的处理方案在JS设计模式,最核心的思想:封装变化将变与不变分离,确保变化的部分灵活,不变的部分稳定构造器模式varemployee1={name:'Kerwin',age:100}varemployee2={name:'xiaoming',......
  • 使用分布式事务 Seata 的 XA 模式
    上篇博客已经搭建了分布式事务Seata的集群,本篇博客主要介绍如何使用Seata的XA模式。XA模式的规范是X/Open组织定义的分布式事务处理(DTP,DistributedTransactionProcessing)标准,XA模式规范描述了全局的TM与局部的RM之间的接口,几乎所有主流关系型数据库都对XA模式......
  • 23种设计模式——单例模式
    今天来学习23种设计模式的第一种,单例模式,同时也是设计模式中最简单的模式之一。概念:所谓类的单例模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。特点:单例类只有一个实例对象;该单例对象必......
  • 设计模式--观察者模式(Observer Pattern)
    Observer模式观察者模式(ObserverPattern)是一种行为设计模式,它定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。观察者模式主要包含以下几个角色:Subject(主题):也被称为Observable,它是被观察的对象。当它的状态发生改变时,会通知......
  • 小谈设计模式(9)—工厂方法模式
    (小谈设计模式(9)—工厂方法模式)专栏介绍专栏地址link专栏介绍主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。工厂方法模式工厂方法模式是一种创建型设计模式,它定义了一......
  • (自用)基于unity的指令(命令)模式
    指令模式1.配置输入 所有游戏中都包含玩家输入指令的部分(这些部分通常写在游戏循环中如unity中的UpData())游戏会每一帧都进行一次读取,当玩家按下相应按键时则会进行对应方法 为了可以时刻检测并记录玩家进行的操作,或者对某个对应的操作的指令进行更改,我们需要将这些......
  • 苹果iPhone因没有存储空间而死机和不断重启,重启白苹果黑底,恢复模式更新系统报错1110,解
    参考自:https://www.bilibili.com/video/BV1Mr4y1X7cT/?spm_id_from=333.337.search-card.all.click&vd_source=869b36c3961d4a89a184a469bc7589bb手机苹果iPhone,存储满,提示重启后白苹果,无法进入系统。操作方法:1、mac雷电接手机后,进入DFU,短按一下音量加键并松开,立刻再短按音量减......
  • 原型模式
    用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。类图:代码:#include<cmath>#include<iostream>usingnamespacestd;classVector{private:   double*array=newdouble[4];   doubl......
  • rabbitmq的推(push)拉(pull)模式介绍及代码实现
    在rabbitmq中有两种消息处理的模式,一种是推模式/订阅模式/投递模式(也叫push模式),消费者调用channel.basicConsume方法订阅队列后,由RabbitMQ主动将消息推送给订阅队列的消费者;另一种是拉模式/检索模式(也叫pull模式),需要消费者调用channel.basicGet方法,主动从指定队列中拉取消息。推......