快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
与以前相比,现在的这两个类更集中于自己的任务。这两个类中的所有方法都很简洁,很容易理解。 第二,PartDb 类专门处理 parts,不涉及其他东西。所有通用的连接代码都已经转移到父类中了。第三,所有方法现在都是可测试的:每个方 法(除了 populate())都只做一件事。populate() 方法是这些类的实际工作流方法。它使用所有其他(私有)方法执行工作,看起来像是执 行的步骤的大纲。第四,现在有了小的构建块,可以组合使用它们,所以方法重用变得更容易了。对于原来的 populate() 方法那样的大型方 法,重用的机会很少:在其他类中,几乎不可能需要以完全相同的次序做相同的事情。实现原子性方法使我们能够组合使用功能。

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

时间:2011-07-13 IBM Neal Ford

提炼的框架与提前设计的框架

最好的框架往往是从现有的代码中提炼出来的,而不是预先设计的。关起门来设计框架的人必须预测到开发人员希望使用框架的所有方式。 框架最终会包含大量特性,而用户很可能并不使用所有特性。但是,您仍然必须考虑到所选框架中不使用的特性,因为它们会增加应用程序的 复杂性;这可能影响不大,比如只需在配置文件中添加额外的条目,也可能影响很大,比如改变实现某一特性的方式。提前设计的框架往往包 含大量特性,同时忽略了没有预测到的其他特性。JavaServer Faces (JSF) 就是提前设计的框架的典型例子。它最酷的特性之一是能够插入不 同的显示管道,从而输出 HTML 之外的其他格式。尽管很少使用这个特性,但是所有 JSF 用户必须了解它对 JSF 请求的生命周期的影响。

从现有应用程序中发展出来的框架往往提供更实用的特性集,因为它们解决开发人员在编写应用程序时面对的实际问题。在提炼的框架中, 多余的特性往往更少。提炼的框架的例子是 Ruby on Rails,它是从实践中发展出来的。

这些重构工作真正重要的益处是得到了可重用的代码。在 清单 1 中,看不到可重用的资产;只看到一大堆代码。通过把混杂的方法分隔开 ,我发现了可重用的资产。但是,除了重用,还有其他好处。我还为在应用程序中处理持久性的简单框架建立了基础。在需要通过创建另一个 边界类从数据库中收集其他实体时,我已经有了基本框架。这就是 提炼 框架的过程,而不是关起门来设计框架。

获得可重用的资产之后,应用程序的总体设计就会透过组成它的代码逐渐显现出来了。紧急设计的目标之一是找到应用程序中使用的惯用模 式。BoundaryBase 和 PartDb 的组合构成一个在此应用程序中反复出现的模式。把代码分隔为小块之后,就很容易看出各个部分是如何协作的 。

SLAP

组合方法的定义的第二部分指出,您应该 “让一个方法中的所有操作处于相同的抽象层”。下面给出一个应用此原则的示例,帮助您理解 它的意义以及它对设计的影响。

请考虑清单 6 中的代码,这些代码取自一个小型电子商务应用程序。addOrder() 方法接受几个参数并把订单信息存储进数据库中。

清单 6. 取自某电子商务站点的 addOrder() 方法

public void addOrder(ShoppingCart cart, String userName,             Order order) throws SQLException {    Connection c = null;    PreparedStatement ps = null;    Statement s = null;    ResultSet rs = null;    boolean transactionState = false;    try {      s = c.createStatement();      transactionState = c.getAutoCommit();      int userKey = getUserKey(userName, c, ps, rs);      c.setAutoCommit(false);      addSingleOrder(order, c, ps, userKey);      int orderKey =

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号