2009-02-23 75 views
2

我有兩個與父子關係的表,仍然混淆瞭如何將它映射到表中的類。封裝方法而不使用業務對象/值對象的簡單類。這些表是類別和產品。孩子父母表:我應該把方法放在兩個類中?

當從一個類別的webform列表產品,我應該做什麼?

創建類別對象並調用GetProductsByGroup(INT的groupId)

創建產品對象並調用GetProductsByGroup(INT的groupId)

哪個類應該擁有的方法?

回答

2

該方法的主要關係是什麼 - 產品。因此,我將它放在Products類中,因爲它將處理與產品相關的所有內容。同樣的,Category類可以有多種處理方法,查詢修改類別&。

0

這幾乎是你的,但我會做以下區分:

如果該方法是在產品類,使它成爲一個靜態方法。

如果該方法在Category類上,請不要將其設置爲靜態。

如果您經常訪問某些內容,則可以考慮將其設置爲您的類別對象的屬性,以便爲該類別延遲加載產品。即第一次訪問屬性時,它會從數據庫中檢索產品並將它們存儲在您的類別對象中;隨後的調用只需返回該列表而不必再次訪問數據庫。

0

簡答:既不。您需要一個集合類。

一般來說,一個類將在表中代表一行,集合將表示該表或其子集。

如果您不想使用業務或數據層對象(順便說一句,這將是適當的),那麼任何一個類都可以在實踐中擁有該方法,但可以作爲靜態方法。不過,它可能會讓生產類擁有它稍微有點意義,因爲它應該返回一個產品集合

3

沒有一個。

爲什麼?

分類:類別是有意義的,它不應該知道任何產品存在。

產品:產品有一個類別,但不知道同一類別的其他產品。

那麼呢?

根據規格提供檢索產品(可稱爲產品存儲庫)的方法的服務。

實施例:

public static class ProductRepository 
{ 
    public static Collection<Product> GetProductsByGroup(int groupID) 
    { 
     ... 
    } 
}