代码改变世界

外观模式(Façade)

2012-09-17 08:06  Mike.Jiang  阅读(535)  评论(0编辑  收藏  举报

1 概述
当你开发系统时,遇到这样的问题:
1>分层开发时,底层的多个类相互协作完成一些复杂的功能,高层的开发人员也必须要知道这些底层类是如何协作完成功能,这样做合理吗
2>在开发系统时,需要用到已有的旧系统中的功能,面对那些杂乱无章的代码、逻辑我们怎么办,难道要每一位开发人员都去面对吗

当遇到这些问题,在面向对象的世界里,我们是如何解决——外观模式
2 GOF
意图
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[GOF 《设计模式》]


结构图

3 理解
SubSystem:复杂的子系统,其中的类关系复杂,类比较多;
Client:高层客户代码
Façade:聚合子系统中的类

这样,原来客户代码是直接与子系统交互,现在它们之间的交互都控制在了Façade类,解耦了高层代码与低层代码。