设计模式 (9) - 外观模式
2015-07-26 22:10
316 查看
问题描述
划分一个系统成为多个子系统,是设计一个复杂系统,简化系统设计的典型方法。但是,如果直接向客户暴露这些子系统接口,不利于系统设计的独立变化,更可能把子系统之间的交互关系直接暴露给客户,从而导致客户逻辑的复杂性。外观模式为系统提供一套相对简洁的接口,降低客户逻辑和系统具体设计的依赖性/耦合性;也让系统设计独立于客户而扩展变化成为可能。
外观模式
如图所示,外观模式的核心要点是:为系统提供一套外部接口,并转发客户请求到相关的子系统。客户通常通过Facade访问子系统,降低了客户和子系统的耦合。
讨论
客户程序通过一个抽象的Facade类设计,而让具体的Facade子类来对应不同的子系统实现,可以更一步降低客户和子系统的耦合度。
划分一个系统成为多个子系统,是设计一个复杂系统,简化系统设计的典型方法。但是,如果直接向客户暴露这些子系统接口,不利于系统设计的独立变化,更可能把子系统之间的交互关系直接暴露给客户,从而导致客户逻辑的复杂性。外观模式为系统提供一套相对简洁的接口,降低客户逻辑和系统具体设计的依赖性/耦合性;也让系统设计独立于客户而扩展变化成为可能。
外观模式
如图所示,外观模式的核心要点是:为系统提供一套外部接口,并转发客户请求到相关的子系统。客户通常通过Facade访问子系统,降低了客户和子系统的耦合。
讨论
客户程序通过一个抽象的Facade类设计,而让具体的Facade子类来对应不同的子系统实现,可以更一步降低客户和子系统的耦合度。
相关文章推荐
- Java并发编程:synchronized
- 1.7-linux启动流程
- iOS开发——Xcode6 创建Empty Application
- Mysql Server端关于字符编码的配置参数
- HDOJ 3788 zoj问题【规律题】
- [知识点]A*搜索(启发式搜索)
- 设计模式 (8) - Composite模式
- 使用Qt designer 向菜单栏和工具栏添加action
- 实现两个N*N矩阵的乘法,矩阵由一维数组表示
- 趣解进程与线程
- UIPickerView
- Bootstrap全局CSS样式之按钮和图片
- C++ string的大小写转换
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 黑马程序员----基础题----我的基础题
- js 动态生成html 触发事件传参字符转义
- 1.6-配置IP地址
- 修复SharePoint 2013 Search 拓扑错误
- TypeScript自定义函数
- 我的C++笔记(数据的共享与保护)