java23种计划模式-表面模式

[复制链接]
发表于 2025-10-24 23:59:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
表面模式(Facade Pattern)学习条记

🌟 界说

表面模式属于结构型计划模式,提供一个同一的接口来访问子体系中的多个接口。它通过界说一个高层接口简化客户端与复杂子体系的交互。

🎯 实用场景


  • 为复杂子体系提供简单入口
  • 解耦客户端与子体系
  • 分层构建体系(各层通过表面类交互)
  • 遗留体系重构(用表面类封装旧接口)

🔧 模式结构

📐 类图


🛠️ 核心构成


  • Facade(表面脚色)

    • 知道子体系功能
    • 将客户端哀求委派给对应子体系对象

  • Subsystem Classes(子体系脚色)

    • 实现子体系具体功能
    • 不感知表面存在(可独立运行)


📝 代码示例

家庭影院场景
  1. // 子系统类
  2. class Lights {
  3.     void dim() { System.out.println("灯光调暗"); }
  4. }
  5. class SoundSystem {
  6.     void on() { System.out.println("音响开启"); }
  7. }
  8. class Projector {
  9.     void down() { System.out.println("幕布降下"); }
  10. }
  11. // 外观类
  12. class HomeTheaterFacade {
  13.     private Lights lights;
  14.     private SoundSystem sound;
  15.     private Projector projector;
  16.     public HomeTheaterFacade() {
  17.         this.lights = new Lights();
  18.         this.sound = new SoundSystem();
  19.         this.projector = new Projector();
  20.     }
  21.     public void watchMovie() {
  22.         lights.dim();
  23.         sound.on();
  24.         projector.down();
  25.     }
  26. }
  27. // 客户端
  28. public class Client {
  29.     public static void main(String[] args) {
  30.         HomeTheaterFacade facade = new HomeTheaterFacade();
  31.         facade.watchMovie(); // 一键启动观影模式
  32.     }
  33. }
  34. 389caf9d-5e32-479d-81c1-66e32a002b95
复制代码

✅ 优点


  • 简化客户端使用复杂度
  • 客户端与子体系松耦合
  • 更好的访问控制(可限定直接访问子体系)
  • 符合迪米特法则(最少知识原则)

⚠️ 缺点


  • 过分使用会导致体系层级过多
  • 增长维护资源(修改子体系大概需调解表面)
  • 大概成为"天主对象"(需注意职责分别)

🔄 相干模式对比

模式区别中介者模式关注子体系间的通讯调和单例模式表面类常实现为单例抽象工厂模式可与表面连合封装创建过程
💡 实践发起


  • 优先思量子体系重构而不是表面包装
  • 保持表面类的单一职责
  • 可创建多个表面类对应差别使用场景
  • 通过依赖注入管理子体系对象
把握表面模式的关键在于明白它作为体系流派的定位,公道使用可以明显提升体系的易用性和可维护性。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表