WEB开发网
开发学院软件开发Java 演化架构和紧急设计: 利用可重用代码,第 1 部分:... 阅读

演化架构和紧急设计: 利用可重用代码,第 1 部分:代码与设计之间的关系

 2010-05-13 00:00:00 来源:WEB开发网   
核心提示: 这看上去可以作为不错的惯用模式积累起来,积累惯用模式的第一种途径是使用 “原生” 语言(即 Java),演化架构和紧急设计: 利用可重用代码,第 1 部分:代码与设计之间的关系(4),如 清单 2 所示:清单 2. 重构惯用的 “工作单元” 模式p

这看上去可以作为不错的惯用模式积累起来。积累惯用模式的第一种途径是使用 “原生” 语言(即 Java),如 清单 2 所示:

清单 2. 重构惯用的 “工作单元” 模式

public void wrapInTransaction(Command c) { 
  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() { 
      add(order, userKeyBasedOn(userName)); 
      addLineItemsFrom(cart, order.getOrderKey()); 
    } 
  });         
} 

以框架作为模式集合

如果您熟悉 Hibernate,那么您将注意到,wrapInTransaction() 方法很像 Hibernate 的 doInTransaction helper。最成功的框架包含的是一组符合实际的技术惯用模式。框架中模式的有用性密切关系到框架如何得以生存。如果框架是从实用代码中提取的,那么其中的模式更多地关注现实中的问题。良好的框架(例如 Hibernate、Spring 和 Ruby on Rails)大多经历了实际应用的严峻考验。

另一方面,如果一个框架是在象牙塔中创建的,很多模式听起来很好,但是在实际项目中却没那么有用。我常提到的一个揣测性框架开发的例子是 JavaServer Faces(JSF)的定制呈现管道 “特性”。它允许输出各种类型的输出格式(例如 HTML、XHTML 和 WML)。我还没遇到过需要这个特性的开发人员(虽然我相信存在这样的开发人员),但是您在编写的每个 JSF 应用程序中都为此付出了一点代价。(它增加了理解事件模型和管道的复杂性。)

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

Tags:演化 架构 紧急

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