幸运星空

Lucker的程序人生

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

(根据MSDN Webcast相关课程整理)

先看以下实例:

左边的方案中客户调用程序与子系统内部的具体实现类具有较多的耦合与交互。显然是不理想的设计方案。随着外部客户程序和各子系统的演化,这种过多的耦合将面临居多变化的挑战。

再看右边的方案,外部客户程序不再直接与子系统内部类直接交互,而是通过一个Façade接口实现内外系统之间的关联,大大降低了系统的耦合性。

clip_image002

GoF:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

clip_image004

平常我们讲的接口不是指特定的Interface,而是指类暴露出来的公有方法。这些方法可以和外界接待交互。

示例:坦克车包含了若干个子系统,如车轮系统,控制系统,引擎系统等等。但通常,我们只需要提供一个统一的操作界面,让驾驶员使用就可以啦,而不需要他去了解各子系统具体的工作方式。

clip_image006

这里我们通过internal关键字来实现子系统的隐藏,而采用组合的方法把各子系统添加到Façade中来,并暴露公有的操作方法供外界调用。

Facade模式更多的是运用于架构层级的设计,优化外界与各子系统之间的耦合关系。

<完>

posted on 2011-12-27 17:42  Lucker  阅读(407)  评论(0编辑  收藏  举报