当前位置: 首页 > news >正文

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

前言

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

定义

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

动机

             

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

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

案例

       略

类图

        

总结

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

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

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

相关文章:

  • 【Java异常】(简简单单拿捏)
  • 剑指 offer 刷题集
  • java 生成.h文件,java调用c语言dll动态链接库流程
  • uni-app App版本更新
  • C语言习题~day33
  • react通过下拉框选择多个,并展示在下方的方式
  • 【工具分享】Darkside勒索病毒解密工具
  • 每天五分钟深度学习框架pytorch:激活函数在神经网络中的应用
  • 数据结构—(java)反射,枚举,lambda表达式
  • 开发受用户喜欢有声听书APP:快速满足用户需求的秘诀
  • [PICO VR眼镜]眼动追踪串流Unity开发与使用方法,眼动追踪打包报错问题解决(Eye Tracking/手势跟踪)
  • 使用 LlamaIndex 进行 CRAG 开发用来强化检索增强生成
  • python 将 aac 转为 mp3,保持原有目录结构
  • Spring 全家桶使用教程 —— 后端开发从入门到精通
  • 江协科技STM32学习- P19 TIM编码器接口
  • 《Java编程思想》读书笔记-对象导论
  • 10个最佳ES6特性 ES7与ES8的特性
  • EventListener原理
  • golang中接口赋值与方法集
  • Java超时控制的实现
  • java中的hashCode
  • jQuery(一)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • mysql innodb 索引使用指南
  • sessionStorage和localStorage
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vue数据传递--我有特殊的实现技巧
  • 程序员最讨厌的9句话,你可有补充?
  • 解析带emoji和链接的聊天系统消息
  • 事件委托的小应用
  • 算法之不定期更新(一)(2018-04-12)
  • 源码安装memcached和php memcache扩展
  • 阿里云ACE认证之理解CDN技术
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​虚拟化系列介绍(十)
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #面试系列-腾讯后端一面
  • %@ page import=%的用法
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (3)选择元素——(17)练习(Exercises)
  • (55)MOS管专题--->(10)MOS管的封装
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (javascript)再说document.body.scrollTop的使用问题
  • (SpringBoot)第二章:Spring创建和使用
  • (二)测试工具
  • (四) Graphivz 颜色选择
  • (未解决)macOS matplotlib 中文是方框
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ./configure,make,make install的作用(转)
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .Net--CLS,CTS,CLI,BCL,FCL