news 2026/6/23 20:58:32

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二十三种设计模式(十)--外观模式

外观模式 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 压缩日志文件 备份日志文件到服务器 日志记录完成!
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 4:18:29

FSNotes深度体验:从笔记混乱到高效管理的完美蜕变

FSNotes深度体验:从笔记混乱到高效管理的完美蜕变 【免费下载链接】fsnotes Notes manager for macOS/iOS 项目地址: https://gitcode.com/gh_mirrors/fs/fsnotes 你是否曾经在十几个笔记应用间反复切换,却始终找不到那款"刚刚好"的工具…

作者头像 李华
网站建设 2026/6/23 16:27:07

【Frida Android】实战篇14:非标准算法场景 Hook 教程

文章目录1 前言2 非标准加密源码解析2.1 代码作用分析3 未混淆APK的Hook流程3.1 定位目标方法3.2 编写Hook脚本3.3 脚本执行效果4 混淆APK的Hook流程4.1 混淆带来的问题4.2 第一步:通过系统方法定位加密逻辑4.2.1 定位脚本4.2.2 分析定位结果4.3 第二步:…

作者头像 李华
网站建设 2026/6/23 21:28:37

Wan2.2-T2V-A14B能否生成核酸检测流程指引动画?公共信息传达

公共信息还能这样“生成”?用AI动画讲清核酸检测全流程 🤖💉 你有没有经历过这样的场景:社区突然通知要做核酸,一群人挤在检测点前,手足无措——健康码怎么打开?排队要隔多远?采样时…

作者头像 李华
网站建设 2026/6/23 21:28:08

告别盈利迷茫!让光储项目赚钱更有依据

光储行业现在火得发烫,但“赚不赚钱”这件事,却总让大家心里打鼓。设计上踩个小坑,可能就赔进去上百万;选设备全凭经验,要么买多了浪费钱,要么不够用影响收益;再加上政策、电价说变就变&#xf…

作者头像 李华