快速业务通道

演化架构与紧急设计: 组合方法和 SLAP - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

演化架构与紧急设计: 组合方法和 SLAP

时间:2011-07-13 IBM Neal Ford

简介:如何在陈旧的代码库中找出隐藏的设计?本文讨论两种对于代码结构很重要的模式:组合方法 和单一抽象层。对代码应用这些原则有助于找到以前隐藏的可重用资产,有助于把现有的代码抽象为成熟的框架。

在这个 系列 的前两期中,我讨论了如何使用测试驱动开发 (TDD) 帮助您逐步发现设计。如果从头开始一个新项目,这种方法的效果非常 好。但是,更常见的情况是您手中已经有许多并不完善的代码,在这种情况下应该怎么办呢?如何在陈旧的代码库中找出可重用的资产和隐藏 的设计?

本文讨论两个很成熟的模式,它们可以帮助您重构代码,寻找可重用的资产:组合方法 和单一抽象层 (SLAP) 原则。良好设计的元素已经 在您的代码中存在了;您只需通过工具找出已经创建的隐藏的资产。

组合方法

科技的变化速度非常快,这有一种糟糕的副作用:开发人员常常会忽视软件知识。我们往往会认为几年前的东西一定已经过时了。这当然是 不对的:许多老书仍然能够提供对于开发人员很重要的知识。这样的经典著作之一是 Kent Beck 所著的 Smalltalk Best Practice Patterns 。作为 Java 开发人员,您可能会问,“13 年前的 Smalltalk 书对我有什么用呢?” Smalltalk 开发人员是第一批用面向对象语言编写程序 的开发人员,他们首创了许多出色的思想。其中之一就是组合方法。

组合方法模式有三条关键规则:

把程序划分为方法,每个方法执行一个可识别的任务。

让一个方法中的所有操作处于相同的抽象层。

这会自然地产生包含许多小方法的程序,每个方法只包含少量代码。

在 “测试驱动设计,第 1 部分” 中,我在讨论在编写实际代码之前编写单元测试时讨论过组合方法。严格遵守 TDD 会自然地产生符合组 合方法模式的方法。但是,对于现有的代码,应该怎么办呢?现在,我们来研究如何使用组合方法发现隐藏的设计。

惯用模式

您可能很熟悉正式的设计模式运动,这一运动起源于 Gang of Four 所著的 Design Patterns。它描述了应用于所有项目的通用模式。但是 ,每个解决方案还包含惯用模式,这些模式不够正式,但是得到了普遍应用。惯用模式代表代码中常用的设计习惯。紧急设计的真正诀窍就是 发现这些模式。它们包括从纯技术模式(例如这个项目中处理事务的方式)到问题领域模式(比如 “在发货之前总是要检查客户的信用”)的 各种模式。

重构成组合方法

请考虑清单 1 中的简单方法。它使用低层 JDBC 连接一个数据库,收集 Part 对象,把它们放在一个 List 中:

清单 1. 用于收集 Part 的简单方法

public void populate() throws Exception {    Connection c = null;    try {      Class.forName(DRIVER_CLASS);      c = DriverManager.getConnection(DB_URL, USER, PASSWORD);      Statement stmt = c.createStatement();      ResultSet rs = stmt.executeQuery(SQL_SELECT_PARTS);      while (rs.next()) {        Part p = new Part();        p.setName(rs.getString("name"));        p.setBrand(rs.getString("brand"));        p.setRetailPrice(rs.getDouble("retail_price"));        partList.add(p);      }    } finally {      c.close();    } }

演化架构与紧急设计: 组合方法和 SLAP(2)

时间:2011-07-13 IBM Neal Ford

混杂的方法

混杂(Olio) 是指 “不同类型的东西的集合”,也就是俗话所说的 “大杂烩”。(这个词经常出现在填字游戏中)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号