C#面向对象设计模式第十一讲:Facade 外观模式(结构型模式)
2011-12-27 17:42
387 查看
(根据MSDN Webcast相关课程整理)
先看以下实例: 左边的方案中客户调用程序与子系统内部的具体实现类具有较多的耦合与交互。显然是不理想的设计方案。随着外部客户程序和各子系统的演化,这种过多的耦合将面临居多变化的挑战。 再看右边的方案,外部客户程序不再直接与子系统内部类直接交互,而是通过一个Façade接口实现内外系统之间的关联,大大降低了系统的耦合性。
GoF:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
平常我们讲的接口不是指特定的Interface,而是指类暴露出来的公有方法。这些方法可以和外界接待交互。 示例:坦克车包含了若干个子系统,如车轮系统,控制系统,引擎系统等等。但通常,我们只需要提供一个统一的操作界面,让驾驶员使用就可以啦,而不需要他去了解各子系统具体的工作方式。
这里我们通过internal关键字来实现子系统的隐藏,而采用组合的方法把各子系统添加到Façade中来,并暴露公有的操作方法供外界调用。 Facade模式更多的是运用于架构层级的设计,优化外界与各子系统之间的耦合关系。 <完>
先看以下实例: 左边的方案中客户调用程序与子系统内部的具体实现类具有较多的耦合与交互。显然是不理想的设计方案。随着外部客户程序和各子系统的演化,这种过多的耦合将面临居多变化的挑战。 再看右边的方案,外部客户程序不再直接与子系统内部类直接交互,而是通过一个Façade接口实现内外系统之间的关联,大大降低了系统的耦合性。
GoF:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
平常我们讲的接口不是指特定的Interface,而是指类暴露出来的公有方法。这些方法可以和外界接待交互。 示例:坦克车包含了若干个子系统,如车轮系统,控制系统,引擎系统等等。但通常,我们只需要提供一个统一的操作界面,让驾驶员使用就可以啦,而不需要他去了解各子系统具体的工作方式。
这里我们通过internal关键字来实现子系统的隐藏,而采用组合的方法把各子系统添加到Façade中来,并暴露公有的操作方法供外界调用。 Facade模式更多的是运用于架构层级的设计,优化外界与各子系统之间的耦合关系。 <完>
相关文章推荐
- C#面向对象设计模式纵横谈 笔记11 Facade外观(结构型模式)
- C#面向对象设计模式纵横谈 学习笔记11 Facade外观(结构型模式)
- 第2章 包装外观(Wrapper Facade):用于在类中封装函数的结构型模式
- 结构型模式-----外观模式(Facade)
- (结构型模式)Facade——外观模式
- (结构型模式)FACADE——外观模式
- 设计模式(九)外观模式Facade(结构型)
- 设计模式(九)外观模式Facade(结构型)
- 设计模式(九)外观模式Facade(结构型)
- 设计模式 (9)——外观模式(Facade Pattern,结构型)
- Java经典设计模式-结构型模式-外观模式(Facade)
- 七个结构型模式5:外观模式-Facade Pattern【学习难度:★☆☆☆☆,使用频率:★★★★★】
- 十三.结构型设计模式——Facade Pattern(外观模式)
- 外观模式Facade(结构型)
- 设计模式(九)外观模式Facade(结构型)
- 设计模式--外观模式Facade(结构型):
- 设计模式(九)外观模式Facade(结构型)
- 面向对象设计模式之Facade外观模式(结构型)
- 结构型模式:Facade(外观)
- 结构型模式-Facade ( 外观模式 )