源码工作室

目标:通俗的语言说出通俗的技术
随笔 - 99, 文章 - 0, 评论 - 1183, 阅读 - 79万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

侃门面模式(Facade)

Posted on   源码工作室  阅读(2437)  评论(3编辑  收藏  举报
  作用:

       为一组具有复杂且全面的接口对象提供一个简单特定的接口。

正文:

       “金玉其外,败絮其中。”这句话对门面模式倒是可以解释。“金玉其外”指的就是门面,是调用者能看到的,是简单特定的接口。“败絮其中”指的就是复杂且全面的接口对象,里面有复杂的逻辑和结构,对调用者来说,是不可见的。

如果调用者不通过门面类而直接调用子系统的接口,那就是很头疼的事。“一叶障目,不见泰山。”这就是门面模式的作用。

我就用一个饭店的例子。


一个饭店,有很多的部门,顾客对每一个部门的职责不关心,要吃饭的顾客只要走进饭店,就有服务员过来服务,等酒足饭饱后,顾客只要说声买单,就有服务员过来结账。对于顾客而言,并不知道服务员是哪个部门的。

再举个例子,那就是照相机里的程序。在拍照前,照相机要做很多的事情,调节光圈,调节焦距,是否要开闪光灯,还有很多普通用户根本不知道的。而这些对于摄影初学者来说,是一窍不通的。这时自动拍照功能就是一个门面模式的应用。用户只要取景,再按快门就行了,其它一切复杂的动作都被隐藏起来。

门面模式不一定是一个类,也可以是一组函数。它把所有全面性和复杂性隐藏在一个非常简单且特定的接口后面,它是用户访问子系统的唯一途径,所有越过接口直接去访问子系统都是违背约定的。

门面模式比较简单,我也就不多说了。
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示