设计模式【9】-- 外观模式?没那么高大上
开局一张图,剩下全靠写...
外观模式是什么
外观模式,其实是用来隐藏系统的复杂性的,屏蔽掉了背后复杂的逻辑,向用户提供简单的可以访问系统的接口,也是属于结构型模式的一种 。
举个例子,比如我们的Java
三层MVC
架构,对外提供的是controller
,但是controller
内部可能调用了很多service
,service
又调用了一些mapper
,反正就是内部很复杂,但是对外只是一个接口,一个门面,外部看起来是简单的,外观很好看,实际上,你都懂。
再举个栗子,我们用的电脑,其实内部也是极其复杂的,但是我们操作的时候,已经不管内存,cpu,磁盘,显卡这些怎么工作了,甚至更加底层还有二进制,硬件之类的,我们只需要开机,做我们想做的事情,比如Ctrl+C
,Ctrl+V
,在美丽漂亮的界面上操作就可以了。
外观模式的角色
外观模式主要包括几个角色:
- 外观角色:糅合多个子系统功能,对外提供一个共同的接口
- 子系统的角色:实现系统的部分功能
- 客户角色:通过外观角色访问各个子系统的功能
优点与缺点
优点:
- 减少系统依赖,这里指的是对外的系统依赖
- 提高灵活性
- 提高安全性
缺点:
- 把东西糅合到一个人身上,带来未知的风险
- 增加新的子系统可能需要修改外观类或者客户端的源代码,违反了“开闭原则”
测试例子
我们以电脑为例子,先给电脑的每个部件抽象定义成为一个组件,赋予一个work()
的方法:
再定义内存,磁盘,cpu三种不同组件,分别实现上面的接口,各自工作:
然后以上组件可能是交叉在一起工作的,我们模拟一下开机过程,操作系统分别调用他们:
而使用人调用的其实是操作系统的开机启动方法,不会直接调用到内部的方法,也就是屏蔽掉了所有的细节:
执行结果如下:
最后简单小结一下,外观模式,可以成为门面模式,也就是屏蔽掉内部细节,只对外提供接口,实现所需的功能,内部功能可能很复杂,以上我们模拟的只是简单操作。学会了么?
【作者简介】:
秦怀,公众号【秦怀杂货店】作者,个人网站:http://aphysia.cn,技术之路不在一时,山高水长,纵使缓慢,驰而不息。
__EOF__

本文链接:https://www.cnblogs.com/Damaer/p/15773631.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库