您的位置: 首页 > 资讯 > 设计

asp.net架构设计解惑

艺术中国 | 时间: 2010-07-30 08:42:36 | 文章来源: 博客园

代码

public class OrderManager

{

public void PlaceOrder(OrderDTO order)

{

// Validate order based on business rules

// Check for stock availablity on items ordered

// Add the order to the database

// Set the order id on the OrderDTO object

}

public bool CancelOrder(Guid orderId)

{

// Retrieve order from database

// Determine if the order can be canceled

// if order can be canceled, set as canceled

// return true/false if order was canceled

}

public bool AddItemToOrder(Guid orderId, OrderItemDTO ItemToAdd)

{

// Retrieve order from database

// Determine if the item can be added to the order

// Add a new item row in the database

// return true/false if item was added to the order

}

public bool ProcessOrder(Guid orderId)

{

// Check to ensure this order can be processed.

// Validate order based on business rules

// Update the stock levels of products ordered

// return true/false if order was processed

}

}

在上面的代码中,所有和订单处理有关的逻辑都写在OrderManager类中。类中的每一个方法就对应业务逻辑中的一个流程或者说对应一个use case,例如:CancelOrder就是取消订单。

通过Transaction Script的方式来组织业务逻辑,一个很好的好处就是直观,很容易理解代码在做什么。如果有新的流程来了,再加一个方法就行了。

同时,这种组织方式的弊端就在于,当系统中的业务变得多而且复杂的时候,那么这样的方法就开始变多,最后的结果就是一个类中有成百上千个方法。而且这些方法中,除了一些基本的验证可以提取为方法重用,其他的流程控制代码在很多的地方要重写,特别是当有两个流程差不多的时候,代码不可避免的重新写。于是,这样的类开始变得庞大而难以管理。

Active Record

这种组织方式已经是我们最熟悉的了。

在很多的项目中,我们的业务实体类基本和数据库中表是一一对应的,例如一个Order业务类就是代表了数据库中的Order表。而且在平时项目中,”朴实的三层(N层)”,一般都是基于这种方式在组织逻辑。

这种方式的最大的区别就是每个业务类自己负责自己的数据存取,也就是说在业务类中包含了业务逻辑的处理和数据的存取。

   上一页   1   2   3   4   下一页  


相关文章
注:凡注明 “艺术中国” 字样的视频、图片或文字内容均属于本网站专稿,如需转载图片请保留 “艺术中国” 水印,转载文字内容请注明来源艺术中国,否则本网站将依据《信息网络传播权保护条例》维护网络知识产权。
打印文章    收 藏    欢迎访问艺术中国论坛 >>
发表评论
用户名 密码
 
尚无评论

留言须知