设计模式之外观模式理解
来源:互联网 发布:工作日记软件 编辑:程序博客网 时间:2024/06/05 04:06
小A去政府办事,比如想开一家公司,需要跑很多个部门,盖N个章,如果能在一个办事窗口把所有需要的资料都提交上去,然后让办事人员去协调各个部门的公务员处理各种流程,小A只需要等一个最终结果就行,该多省事。虽然这个在现实条件下不容易实现,但在程序设计中有类似的思路,就是facade(外观)模式。
外观模式:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。
上图形象地描述了外观模式的作用。在实际应用中,外观模式能够对客户屏蔽子系统组件,实现了子系统与客户之间的松耦合关系,但外观模式也有一个明显的缺点,就是增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”。在上面的例子中,就是如果政府出台一项新规定,科技公司可以减免税收,但需开具证明,恰好小A所开的公司是科技公司,为了享受税收优惠,小A就必须另外去开科技公司的证明,也就是客户端的行为需要做修改。
为了解决这个问题,引入了抽象外观类,客户端针对抽象外观类进行编程。对于新的业务需求,不修改原有外观类,而对应增加一个新的具体外观类,由新的具体外观类来关联新的子系统对象,同时通过修改配置文件来达到不修改源代码并更换外观类的目的。
回到开公司的例子,也就是窗口办事员只负责接收小A的资料,具体的办事流程交给后台办事员处理,如果是科技公司就交给专门负责科技公司的后台办事员处理,让他去开证明,小A只需要提交所需的材料即可。这样对小A来说,只需要提交资料,对于窗口办事员来说,不需要增加自己的工作量,只是政府需要增加一个后台办事员的编制而已。
- 设计模式之外观模式理解
- 简单理解设计模式之外观模式
- 设计模式之外观
- 设计模式之外观
- 设计模式 之 外观
- 设计模式之外观
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- nginx进程管理之master进程
- HDU 1829 A Bug's Life (并查集)
- High Dynamic range image--汇总的笔记,待整理
- Android HTML.fromHtml解析图片标签
- Linux命令 tar 压缩和解压
- 设计模式之外观模式理解
- mac下安装android studio 遇到问题及解决方案
- 拿来主义:java中的线程安全与非线程安全,以及如何使用和实现
- HDU2063——过山车——————【二分图最大匹配模板】
- WSDL 详解
- Qt5学习笔记(5)——列表框QListWidget类
- OpenStack之RESTful API调用(二)
- 目标检测的图像特征提取之(一)HOG特征
- C++Primer学习笔记(6)语句