WEB开发网
开发学院软件开发Java 演化架构与紧急设计: 对设计进行重构 阅读

演化架构与紧急设计: 对设计进行重构

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 图 1. 使用 Struts ActionForm 类黄色的方框包含了您的域类,但是 Struts 框架鼓励您扩展 ActionForm 获得有用的行为,演化架构与紧急设计: 对设计进行重构(3),然而,您现在必须将代码与 Struts 框架耦合,您应当抵制这种诱惑,如果框架掩盖住了所有内容,除


图 1. 使用 Struts ActionForm 类
演化架构与紧急设计: 对设计进行重构

黄色的方框包含了您的域类,但是 Struts 框架鼓励您扩展 ActionForm 获得有用的行为。然而,您现在必须将代码与 Struts 框架耦合。除了 Struts 应用程序外,您不能在其他任何位置使用域类。这还不利于域类的设计,因为这个实用类现在必须位于对象层次结构的顶层,不允许您使用继承来整合常见行为。

图 2 展示了一种更好的方法:


图 2. 改进后的设计,使用复合解除与 Struts 的耦合
演化架构与紧急设计: 对设计进行重构

采用这种方法,您的域类对 Struts ActionForm 不存在任何依赖关系。相反,一个接口为您的域类和 ScheduleItemForm 类定义了语义,后者充当域类与框架之间的一个桥梁。ScheduleItemImpl 和 ScheduleItemForm 都实现了这个接口,而 ScheduleItemForm 类通过复合(而不是继承)获得了对域类的引用。允许 Struts helper 维护对您的类的依赖关系,但是反过来并不成立:您不应该让类对框架存在依赖关系。现在,您可以在其他类型的应用程序中随意使用 ScheduleItem(比如 Swing 应用程序和服务层等)。

与基础设施建立耦合非常简单,并且对于许多应用程序来说也很普遍。当您导入了框架的优点时,框架可以极大地简化对服务的利用。您应当抵制这种诱惑。如果框架掩盖住了所有内容,那么就更加难以发现代码中的惯用模式(早期文章中定义为应用程序中出现的 little 模式)。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:演化 架构 紧急

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接