WEB开发网
开发学院软件开发Java 演化架构与紧急设计: 组合方法和 SLAP 阅读

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

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 把这些方法提升到父类中之后,PartDb 类已经大大简化了,演化架构与紧急设计: 组合方法和 SLAP(6),见清单 5: 清单 5. 简化和重构后的 PartDb 类publicclassPartDbextendsBoundaryBase{privatestaticfinalintDEFAUL

把这些方法提升到父类中之后,PartDb 类已经大大简化了,见清单 5:


清单 5. 简化和重构后的 PartDb 类
public class PartDb extends BoundaryBase { 
  private static final int DEFAULT_INITIAL_LIST_SIZE = 40; 
  private static final String SQL_SELECT_PARTS = 
      "select name, brand, retail_price from parts"; 
  private static final Part[] TEMPLATE = new Part[0]; 
  private ArrayList partList; 
 
  public PartDb() { 
    partList = new ArrayList(DEFAULT_INITIAL_LIST_SIZE); 
  } 
 
  public Part[] getParts() { 
    return (Part[]) partList.toArray(TEMPLATE); 
  } 
 
  protected String getSqlForEntity() { 
    return SQL_SELECT_PARTS; 
  } 
 
  protected void addEntityToListFromResultSet(ResultSet rs) 
      throws SQLException { 
    Part p = new Part(); 
    p.setName(rs.getString("name")); 
    p.setBrand(rs.getString("brand")); 
    p.setRetailPrice(rs.getDouble("retail_price")); 
    partList.add(p); 
  } 
} 

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

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

Tags:演化 架构 紧急

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