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

外观模式Facade Pattern

模式定义

外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面

  • 又称为门面模式
  • 对象结构型模式

模式结构

  • Facade:外观角色
    • 在很多情况下为了节约系统资源,一般将外观类设计为单例类
  • SubSystem:子系统角色

外观角色代码

public class Facade {private SubSystemA obj1 = new SubSystemA();private SubSystemB obj2 = new SubSystemB();private SubSystemC obj3 = new SubSystemC();public void method() {obj1.method();obj2.method();obj3.method();}}

引入抽象外观类

客户端针对抽象外观类进行编程

对于新的业务需求,不修改原有外观类,而对应增加一个新的具体外观类,由新的具体外观类来关联新的子系统对象,同时通过修改配置文件来达到不修改源代码并更换外观类的目的

模式分析

  • 优点
    • 对客户屏蔽子系统组件,减少了客户处理的对象数目并使得子系统使用起来更加容易
    • 客户代码将变得很简单,与之关联的对象也很少
    • 实现了子系统与客户之间的松耦合关系,这使得子系统的组件变化不会影响到调用它的客户类,只需要调整外观类即可
      • 体现迪米特法则
    • 降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程
      • 编译一个子系统一般不需要编译所有其他的子系统
      • 一个子系统的修改对其他子系统没有任何影响,而且子系统内部变化也不会影响到外观对象
    • 只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类。
  • 缺点
    • 不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性
    • 在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码
      • 违背开闭原则

适用环境

  • 当要为一个复杂子系统提供一个简单接口时可以使用外观模式。该接口可以满足大多数用户的需求,而且用户也可以越过外观类直接访问子系统。
  • 客户程序与多个子系统之间存在很大的依赖性。引入外观类将子系统与客户以及其他子系统解耦,可以提高子系统的独立性和可移植性。
  • 在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度
http://www.xdnf.cn/news/1057123.html

相关文章:

  • 02- 六自由度串联机械臂(ABB)运动学分析
  • C++面向对象编程:简洁入门
  • RPG29:制作ui基础
  • YoloV12改进策略:Block改进|MKP,多尺度卷积核级联结构,增强感受野适应性|即插即用|AAAI 2025
  • 命令模式Command Pattern
  • 多线程并发编程硬核指南:从互斥锁到生产者模型的全场景实战与原理揭秘
  • C++(初阶)(二十一)——unordered_set和unordered_map
  • Addressable-引用计数
  • DDD领域驱动设计学习路线
  • VS202静态库制作和使用指南
  • 【Android】输入路由
  • 将CVAT点云格式标注格式由datumaro转换为kitti格式
  • 软件测试用例(一)
  • Java锁机制:ReentrantLock深度解析与锁粒度优化实践(时序图详解)
  • 交互式编程:编程范式的静默革命
  • 在windows10上安装nvm以及配置环境
  • 【推荐】城市灾害应急管理系统【面试模拟题目——字节跳动面试原题】
  • java复习 13
  • (二十八)深度解析领域特定语言(DSL)第六章——语法分析:巴科斯-诺尔范式
  • 适合 Acrobat DC 文件类型解析
  • 6.15 操作系统面试题 锁 内存管理
  • Appium + .NET 测试全流程
  • 【模拟 贪心】B4207 [常州市赛 2021] 战士|普及+
  • XP POWER EJ ET EY FJ FR 系列软件和驱动程序和手侧
  • verl multi-node train 教程
  • 红花多组学挖掘OGT1-文献精读146
  • Git开发流程
  • 两个渐开线花键需要共用一把滚刀
  • 【unitrix】 1.8 常量约束(const_traits.rs)
  • SOLIDWORKS的“12”个简单高效的草图绘制规则,全部应用成为草图大师!