设计模式之门面(Facade)模式

前言

在组建构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至跟本无法实现。采用添加一层(间接)稳定接口,来隔离本来互相紧密关联的接口是一种常见的解决方案

定义

"接口隔离" 模式。为子系统中的一组接口提供一个一致(稳定)的界面,门面模式定义了一个高层接口。这个接口使得这一子系统更加容易使用(复用)

动机

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

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

案例

类图

总结

从客户程序的角度来看,门面模式简化了整个组件系统的接口,对于组件内部与外部客户程序来说,达到了一种 "解耦" 的效果------内部子系统的任何变化不会影响到门面接口的变化

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

门面设计模式并非一个集装箱,可以任意地放进任何多个对象。门面模式中组件的内部应该是 "相互耦合关系比较大的一系列组件",而不是一个简单的功能集合

相关推荐
Invulnerabl_DL2 分钟前
C++的智能指针
开发语言·c++
OvO_______36 分钟前
C++之初识STL(概念)
c++
挥剑决浮云 -40 分钟前
LeetCode Hot100 C++ 哈希 1.两数之和
c++·算法·leetcode·哈希算法
Goodness202044 分钟前
STL与PLY格式转化
c++·python
java_heartLake1 小时前
设计模式之观察者模式
java·观察者模式·设计模式
John_ToDebug1 小时前
设计模式之策略模式
c++·设计模式·策略模式
我是回頭呀1 小时前
设计模式之装饰器模式
设计模式·装饰器模式
wy3136228212 小时前
kotlin——设计模式之责任链模式
设计模式·kotlin·责任链模式
全貌2 小时前
C++笔记 --基本语法(命名空间/函数重载/缺省参数/引用/inline/nulltpr)
开发语言·c++·笔记
斯派的曼2 小时前
学习C++的第七天!
开发语言·c++·学习