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对客户屏蔽了子系统组件,提高了子系统的独立性。至于从架构层次看整个系统,这一点还要使用中去体会。

posted @ 2012-12-31 11:37  日暮乡关何处是  阅读(199)  评论(0编辑  收藏  举报