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

二十三种设计模式(十)--外观模式

外观模式 Facade

外观模式是开发过程中经常不经意间就用到的模式. 当我们编写一个功能相对复杂的模块时, 要对外提供一个简单的调用接口, 就用到了外观模式.
外观模式的核心价值就是对外提供简单易用的接口, 屏蔽内部复杂的逻辑, 协调多个子系统之间的交互顺序和依赖关系.
多个子系统之间是相互独立, 外观模式只是协调它们之间的关系, 不对子系统进行管理.
外观模式是通过外观层, 将使用端与诸多子系统完全隔离, 使用端不能直接调用子系统.
简单使用示例如下:

// 外观类:对外提供统一接口,协调子系统classLogFacade{// 持有子系统的引用(可按需创建或注入)privateFileWriterfileWriter;privateEncryptorencryptor;privateCompressorcompressor;privateBackupperbackupper;publicLogFacade(){this.fileWriter=newFileWriter();this.encryptor=newEncryptor();this.compressor=newCompressor();this.backupper=newBackupper();}// 对外提供的简单接口:记录日志(内部协调子系统的一系列操作)publicvoidrecordLog(Stringcontent){// 1. 加密日志内容StringencryptedContent=encryptor.encrypt(content);// 2. 写入文件fileWriter.write(encryptedContent);// 3. 压缩日志文件compressor.compress();// 4. 备份日志文件backupper.backup();System.out.println("日志记录完成!");}}// 子系统1:日志写入文件classFileWriter{publicvoidwrite(Stringcontent){System.out.println("将加密后的日志写入文件:"+content);}}// 子系统2:日志加密classEncryptor{publicStringencrypt(Stringcontent){// 模拟加密逻辑return"encrypted_"+content;}}// 子系统3:日志压缩classCompressor{publicvoidcompress(){System.out.println("压缩日志文件");}}// 子系统4:日志备份classBackupper{publicvoidbackup(){System.out.println("备份日志文件到服务器");}}

客户端调用示例:

publicclassFacadePattern{publicstaticvoidmain(String[]args){// 客户端只与外观类交互,无需关心内部子系统LogFacadelogFacade=newLogFacade();logFacade.recordLog("用户登录成功:admin");}}

运行结果:

将加密后的日志写入文件:encrypted_用户登录成功:admin 压缩日志文件 备份日志文件到服务器 日志记录完成!
http://www.cnnetsun.cn/news/9136.html

相关文章:

  • FSNotes深度体验:从笔记混乱到高效管理的完美蜕变
  • 【大模型必读书籍】轻松入门Cursor与MCP:AI辅助编程,零基础也能成为编程高手!
  • 【Frida Android】实战篇14:非标准算法场景 Hook 教程
  • sfy recommend
  • Wan2.2-T2V-A14B能否生成核酸检测流程指引动画?公共信息传达
  • 告别盈利迷茫!让光储项目赚钱更有依据
  • 深圳便利店鸡尾酒哪家好?浅醺猫定义Z世代“精品自调“新标准
  • 运维工程师转网安要学什么?有什么好处?
  • Wan2.2-T2V-A14B如何实现烟雾扩散的三维渲染?
  • 揭秘VSCode中Cirq智能补全原理:如何实现毫秒级代码建议响应
  • .NET进阶——深入理解委托(1)委托入门
  • 无状态接口设计指南
  • day11日志
  • swiftui—4
  • 为什么你的图片选择器总是出问题?这5个预防技巧让Bug无处可逃
  • 专业做PC耐力板的源头厂家哪个好
  • Wan2.2-T2V-A14B生成丝绸之路历史变迁动态地图
  • [Windows] 自动剪辑音频气口空隙工具
  • ANTLR4 C++目标终极实战指南:从零构建高性能语法解析器
  • 小兔鲜儿UniApp微信小程序开发实战:从零到上线的完整指南
  • HackRF PortaPack H1固件配置完整指南
  • GPT-5.2的发布:将如何影响未来的创作与文化传播?
  • 2025年内容优化工具选型指南:5款热门产品实测,精准匹配全场景需求
  • ArkOS开源游戏系统完整指南:从入门到精通
  • 从开发转到安全渗透工程师,是我做的最对的决定
  • 60亿消息表如何分库分表?
  • 干货分享,大厂内部压测方案设计
  • Python_work3
  • AFLplusplus模糊测试实战:10个高效调试技巧解决常见问题
  • 探索三电平T型LCL并网逆变器的双闭环PI + SVPWM控制仿真之旅