您的位置: 首頁 > 資訊 > 設計

asp.net架構設計解惑

藝術中國 | 時間: 2010-07-30 08:42:36 | 文章來源: 部落格園

例如:

代碼

public class Order

{

private Guid _id;

private DateTime _creationDate;

private int _shippingMethod;

private int _status;

private List _orderItems;

public Guid Id

{

get { return _id; }

set { _id = value; }

}

public List OrderItems

{

get { return _orderItems; }

set { _orderItems = value; }

}

// Business Logic

public void Place()

{

// Validate order based on business rules to ensure it is in

// a good state to add to the database

// Check for stock availablity on items ordered

this.Add();

}

public void Cancel()

{

// Check to ensure this order can be canceled.

this.Status = Status.Cancelled();

this.Save();

}

public void ProcessOrder()

{

// Check to ensure this order can be processed.

// Validate order based on business rules

// Udpate the stock levels of products ordered

}

// Data Access Methods

public void Save()

{

// Code to persist changes to the database

}

public void Add()

{

// Code to Add this object to the database

}

public void Delete()

{

// Code to remove this object from the database

}

public static List FindAll()

{

// Code to retrive all Orders from the database

}

public static Order FindBy(Guid id)

{

// Code to retrive a specific Order from the database

}

}

上面的代碼中,Order類包含了業務邏輯處理的代碼,如Cancel, Process。通過這些方法也調用了數據訪問代碼來保存數據。

如果在開發的項目中,業務類和數據表是一一對應的關係,例如在開發部落格或者論壇,Active Record方式就很合適。

相信很多的項目都是基於這個方式在開發和組織邏輯層,這個方式最大的弊端就是:數據庫表只要改動,那麼業務邏輯層動,而且這種變動會一直波及到了UI那端。

Domain Model

通過用這種方式來組織業務層的時候,業務層就只是關注把現實中的概念轉換為相應的業務邏輯模型,不關注其他的方面。例如,在電子商務網站開發中,一些概念就被建模表示為一個個的業務模型(也就是業務類),Order, Shopping Cart, Customer等。而且和Active Record最大的區別就是:Domain Model中的業務類不是和表一一對應的,下圖就是一個很好的例子:

   上一頁   1   2   3   4   下一頁  


相關文章
注:凡註明 “藝術中國” 字樣的視頻、圖片或文字內容均屬於本網站專稿,如需轉載圖片請保留 “藝術中國” 浮水印,轉載文字內容請註明來源藝術中國,否則本網站將依據《資訊網路傳播權保護條例》維護網路智慧財産權。
列印文章    收 藏    歡迎訪問藝術中國論壇 >>
發表評論
用戶名 密碼
 
尚無評論

留言須知