看上去很美:外观模式

在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。举例来说,比如利用传统的三层结构,我们开发了一个客户订单管理系统,数据库表包括主要客户表,订单表,产品表。在该应用程序中,有部分操作只是简单的从数据库根据条件提取数据,不需要经过任何处理,而直接将数据显示到网页上,比如客户登陆显示等级和积分。而另外一些操作,比如客户预定定单中计算购买产品的总价并根据顾客的级别计算回扣,积分和等级之间的相互转换(等级按照积分的变化而变化)等等,这部分往往有许多不同的功能的类,操作起来也比较复杂。如果采用传统的三层结构,这些逻辑一般是会放在中间层,那么对内部的这些大量种类繁多,使用方法也各异的不同的类的调用任务,就完全落到了表示层。这样势必会增加表示层的代码量,将表示层的任务复杂化,和表示层只负责接受用户的输入并返回结果的任务不太相称,并增加了层与层之间的耦合程度。
那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?
于是就引入了一个Facade层,让这个Facade来负责管理系统内部类的调用,并为表示层提供了一个单一而简单的接口。好了,Code is cheap.看代码了先。
类图:

代码部分:

Code
posted on 2009-03-28 12:24  JeffWong  阅读(533)  评论(0编辑  收藏  举报