设计模式笔记(6 FACADE)
来源:互联网 发布:淘宝上如何开店流程 编辑:程序博客网 时间:2024/05/05 04:50
FACADE(外观)
适用性:
1.需要为一个复杂子系统提供一个简单接口时,为子系统提供一个简单的外观。
2.客户程序与抽象类的实现之间存在很大的依赖性
3.当需要构建一个层次结构的子系统时,使用FACADE来定义子系统中每层的入口点。
思考:
关于第一点,好处是明显的,它降低了客户的学习成本。但是,一般而言,如果这个子系统是一个定制的子系统,可能直接提供一个简单接口更省事。如果这个子系统来是已经实现了的,或者存在必须访问子系统内部组件的可能,这个时候使用FACADE可能更恰当。另外,提供一个FACADE,供二次开发,也是非常有价值的。FACADE的特别之处在于,外观并不打算隐藏内部的子系统,只是希望可以降低客户使用该子系统的学习成本和使用成本。实际上,有点为常见应用环境定制一个接口包的意思。从这一点出发,是否可以得出一个推论:我们可以为一个子系统提供多个独立的FACADE,从而简化多个典型的常见情形的使用成本?
关于第二点,从依赖倒置的原则来说,实现应该围绕上层的需要来设计接口。如果是这样,那也就没有FACADE存在的必要了。我想,出现需要FACADE的情况是什么呢?一个是,这个子系统相当独立,并且,我们在这样一个子系统上已经有了充分的认识,那么按照这个子系统本身的逻辑来实现是最自然的。另一个情况是,这个子系统过于复杂,在实现上,不得不充分尊重如何实现该子系统。
FACADE模式的目的是降低使用成本,也具备一定的划分子系统的功能。但FACADE并不打算封装其所在的子系统。那样的化,FACADE可能变得过于笨拙和复杂,反而为用户带来负担。
适用性:
1.需要为一个复杂子系统提供一个简单接口时,为子系统提供一个简单的外观。
2.客户程序与抽象类的实现之间存在很大的依赖性
3.当需要构建一个层次结构的子系统时,使用FACADE来定义子系统中每层的入口点。
思考:
关于第一点,好处是明显的,它降低了客户的学习成本。但是,一般而言,如果这个子系统是一个定制的子系统,可能直接提供一个简单接口更省事。如果这个子系统来是已经实现了的,或者存在必须访问子系统内部组件的可能,这个时候使用FACADE可能更恰当。另外,提供一个FACADE,供二次开发,也是非常有价值的。FACADE的特别之处在于,外观并不打算隐藏内部的子系统,只是希望可以降低客户使用该子系统的学习成本和使用成本。实际上,有点为常见应用环境定制一个接口包的意思。从这一点出发,是否可以得出一个推论:我们可以为一个子系统提供多个独立的FACADE,从而简化多个典型的常见情形的使用成本?
关于第二点,从依赖倒置的原则来说,实现应该围绕上层的需要来设计接口。如果是这样,那也就没有FACADE存在的必要了。我想,出现需要FACADE的情况是什么呢?一个是,这个子系统相当独立,并且,我们在这样一个子系统上已经有了充分的认识,那么按照这个子系统本身的逻辑来实现是最自然的。另一个情况是,这个子系统过于复杂,在实现上,不得不充分尊重如何实现该子系统。
FACADE模式的目的是降低使用成本,也具备一定的划分子系统的功能。但FACADE并不打算封装其所在的子系统。那样的化,FACADE可能变得过于笨拙和复杂,反而为用户带来负担。
- 设计模式笔记(6 FACADE)
- 设计模式笔记(6 FACADE)
- 设计模式笔记(6 FACADE)
- 设计模式笔记(6 FACADE)
- 【设计模式学习笔记】Facade
- 设计模式学习笔记--门面(Facade)模式
- 设计模式--之Facade模式 笔记
- 设计模式 笔记 外观模式 Facade
- 设计模式之外观(Facade)模式(笔记)
- [设计模式学习笔记]FACADE外观模式
- 设计模式笔记-Facade外观模式
- 《设计模式》学习笔记--外观Facade
- 设计模式6--外观模式(Facade)
- 设计模式 Facade模式
- [设计模式]facade模式
- 设计模式-facade模式
- 设计模式 - Facade模式
- 【设计模式】--FACADE模式
- ZT: WindowsXP内存优化指南
- 分页存储过程的一点心得
- 【AjaxPro实现机制浅析二】*.ashx文件是怎么来的?
- Visual Studio.Net快捷键表
- 原创C#三层结构代码生成器
- 设计模式笔记(6 FACADE)
- 《代码大全(第2版)》中文版上市, 4 天里首印的10,000册销售一空,加急重印。勘误表持续更新中
- 整理了一些t-sql技巧
- asp.net+VML+XMLHTTP实现无刷新动态曲线图(附源码)
- 经典:面向对象编程,我的思想
- 面向对象程序设计
- DOS下联网的方法
- MS Enterprise Library Learning ------------------------part 1 DataAccess block
- 危险字符过滤的类