Facade外观模式
念:“佛萨德”。
看了几个帖子:http://www.cnblogs.com/Terrylee/archive/2006/03/17/352349.html 、http://www.cnblogs.com/webabcd/archive/2007/03/20/681793.html 、 http://www.cnblogs.com/kid-li/archive/2006/07/10/446904.html
这外观模式好像也太简单了吧。
猿A要在项目里加一个特价商品页面,新建一个aspx拖几个datalist然后开始cs里写GetDate(),但是这事要一会儿查数据库,一会儿查用户喜好,一会儿看产品列表,甚至还得看产品销售额啥的,都在在GetDate里就太长了,更重要的是,说不定过两天还要做一个类似的“最热商品页面”,把这些逻辑都放在ui这里也不好维护啊,于是,把这些乱七八糟的(查库、查用户喜好、看产品列表)东西单独放到一个地方(比如BLL层),这就是外观模式了。
例子就不举了,看http://www.cnblogs.com/kid-li/archive/2006/07/10/446904.html吧。
可是,平时我们不都这么写程序吗,这也算“模式”?
TerryLee大神说:
效果及实现要点
1.Façade模式对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
2.Façade模式实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。
3.如果应用需要,它并不限制它们使用子系统类。因此你可以在系统易用性与通用性之间选择。
适用性
1.为一个复杂子系统提供一个简单接口。
2.提高子系统的独立性。
3.在层次化结构中,可以使用Facade模式定义系统中每一层的入口。
总结
Façade模式注重的是简化接口,它更多的时候是从架构的层次去看整个系统,而并非单个类的层次。
简而言之:Facade对客户屏蔽了子系统组件,提高了子系统的独立性。至于从架构层次看整个系统,这一点还要使用中去体会。