演化架构与紧急设计: 组合方法和 SLAP
2009-11-05 00:00:00 来源:WEB开发网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 = getOrderKey(s, rs);
addLineItems(cart, c, orderKey);
c.commit();
order.setOrderKeyFrom(orderKey);
} catch (SQLException sqlx) {
s = c.createStatement();
c.rollback();
throw sqlx;
} finally {
try {
c.setAutoCommit(transactionState);
dbPool.release(c);
if (s != null)
s.close();
if (ps != null)
ps.close();
if (rs != null)
rs.close();
} catch (SQLException ignored) {
}
}
}
更多精彩
赞助商链接