2009-02-27 37 views
0

我的Web應用程序的業務層中有一個名爲Player的類。什麼時候最好使用新類而不是添加到現有類

播放器類有場PlayerID,類別ID和CountryID

在播放器類中的函數調用PlayerDB級數據訪問層,後者又調用存儲過程:這對於PlayerID,類別ID(外鍵返回數據的功能到類別表)和CountryID(國家表的外鍵)從播放器表中。

我現在有一種情況,我想將Country Name和Country Image(url路徑)添加到上面的調用中,從Country表中爲每個CountryID返回新的字段。

我的問題是,是否將國家名稱和國家/地區圖像作爲附加字段添加到Player類中,或者是否有稱爲Country(BLL)和CountryDB(DAL)的新類以及新的存儲過程?

我想要做什麼是最佳實踐,而不是什麼可能是最簡單的方法。

如果相關,我使用ASP.NET,VB.NET和SQL2005。

正如你可能會告訴我,我是一個新手,所以原諒我,如果我沒有在我的問題中使用正確的術語。我希望你明白這個主意。

回答

1

您可以製作一個國家班級,並使用對象組合讓國家班級成爲玩家班級的一個屬性。

Public Property Country() as BLL.Country 
' etc 

然後你會打電話像這樣的方法:

Dim p as BLL.Player 
a = p.Country.ID 
b = p.Country.Name 
c = p.Country.Image 
d = p.ID 
e = p.CategoryID 
1

創建一個新班級。如果它作爲一個單獨的邏輯實體是有意義的,那麼它應該是它自己的類。

1

這聽起來像你應該創建一個新的類。

它取決於「Player」類的用途。如果它是一個泛型類型(它聽起來就是這樣),它在應用程序的多個部分中使用,那麼爲您的應用程序的單個部分添加一個自定義到Player類中可能是一件壞事。但是,如果(例如)Player類僅在您的應用中的單個用戶界面中使用,並且它的目的是僅爲該應用的該部分表示播放器,則添加這些字段可能是合理的事情去做。

0

我發現,無論何時我不得不問這個問題,答案總是會變成一個新班級。我不認爲我曾經見過一個班級太多的系統,或者兩個本應該是一個系統的系統。

永遠。

0

你將如何使用該國的數據?你會一直在寫player.getCountry().getName()嗎?如果是這樣,你可以編寫一個函數player.getCountryName(),它在內部調用country.getName()

看看Law of Demeter,它說你應該限制你的呼叫者知道你的內部有多少。

相關問題