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

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

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 现在,方法的可读性好多了,演化架构与紧急设计: 组合方法和 SLAP(10),它的主体符合组合方法的目标:看起来像是执行的步骤的大纲,方法现在处于高层,注意,在用事务块保护更新方面有一个惯用模式,甚至非技术用户差不多也能够理解方法的作用,如果仔细看看 completeTransaction()

现在,方法的可读性好多了。它的主体符合组合方法的目标:看起来像是执行的步骤的大纲。方法现在处于高层,甚至非技术用户差不多也能够理解方法的作用。如果仔细看看 completeTransaction() 方法,会发现它只有一行代码。难道不能把这一行代码放回 addOrder() 方法中吗?不行,这会损害代码的可读性和抽象层。从高层的订单业务工作流跳到事务的细节是违反 SLAP 原则的。建立 completeTransaction() 方法能够使代码更概念化,避免具体的细节。如果以后要改变访问数据库的方式,只需修改 completeTransaction() 方法的内容,而不必修改调用代码。

SLAP 原则的目标是使代码更容易阅读和理解。但是,它也有助于发现代码中存在的惯用模式。注意,在用事务块保护更新方面有一个惯用模式。可以进一步重构 addOrder() 方法,见清单 8:


清单 8. 事务性访问模式
public void wrapInTransaction(Command c) throws SQLException { 
  setupDataInfrastructure(); 
  try { 
    c.execute(); 
    completeTransaction(); 
  } catch (RuntimeException ex) { 
    rollbackTransaction(); 
    throw ex; 
  } finally { 
    cleanUp(); 
  } 
} 
 
public void addOrderFrom(final ShoppingCart cart, final String userName, 
             final Order order) throws SQLException { 
  wrapInTransaction(new Command() { 
    public void execute() throws SQLException{ 
      add(order, userKeyBasedOn(userName)); 
      addLineItemsFrom(cart, order.getOrderKey()); 
    } 
  });         
} 

上一页  5 6 7 8 9 10 

Tags:演化 架构 紧急

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