设计模式——外观模式
外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
简单的说,外观模式就是把复杂的系统的具体操作封装起来,只暴露一个简单的接口,做和众多子系统之间松耦合。
提到一个设计原则:最少知识原则,只和你的密友谈话。(HeadFirst中的描述)具体的说就是让类和类之间尽量松耦合,类与类之间的依赖降到最低,各司其职。
迪米特法则:一个软件实体应当尽可能少的与其他实体发声相互作用。
用一个注册公司的系统来说明问题:
AIC 工商局
BQS 质监局
Bank 银行
TaxB 税务局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | public interface AIC { void checkName(); } class BJAIC implements AIC { @Override public void checkName() { System.out.println( "检查名字是否有冲突!" ); } } public interface BQS { void orgCodeCertificate(); //办理组织机构代码证 } class BJBQS implements BQS { @Override public void orgCodeCertificate() { System.out.println( "在北京质检局办理组织机构代码证!" ); } } public interface Bank { void openAccount(); //开户 } class BJBank implements Bank { @Override public void openAccount() { System.out.println( "在北京银行开户!" ); } } public interface TaxB { void taxCertificate(); //办理税务登记证 } class BJTaxB implements TaxB { @Override public void taxCertificate() { System.out.println( "在北京税务局办理税务登记证!" ); } } public class RegisterFacade { public void register(){ AIC a = new BJAIC(); a.checkName(); BQS b = new BJBQS(); b.orgCodeCertificate(); TaxB c = new BJTaxB(); c.taxCertificate(); Bank d = new BJBank(); d.openAccount(); } } public class Client { public static void main(String[] args) { //使用外观模式之后注册公司就是这么简单!!还有谁!! new RegisterFacade().register(); } } |
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 自定义通信协议——实现零拷贝文件传输
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· 自定义Ollama安装路径
· 本地部署DeepSeek
· 快速入门 DeepSeek-R1 大模型
· DeepSeekV3+Roo Code,智能编码好助手