2016-03-04 74 views
0

這是我的課:獲取對象的實例,它是否屬於類?

public class Boots 
{ 
    public string Name { get; private set; } 
    public int Size { get; private set; } 

    public Boots(string Name, int Size) 
    { 
     this.Name = Name; 
     this.Size = Size; 
    } 
} 

我希望創建一個名字從數據庫中獲取引導的方法。 我應該把這種方法放在面向對象的思維中嗎?該方法不屬於引導實例,但在我看來,它屬於該類。

是由具有返回一個實例

public static Boots GetBoots(string Name) 
{ 
    //Get boot from db and creates a Boots by calling its constructor 
    return new Boots(.....); 
} 
+0

搜索「活動記錄」,這已經討論過很多次了。 – CodeCaster

+3

你可以創建一個'BootsRepository'來獲取和保存'Boots'的實例。 (我正在努力尋找一個比'Boots'更好的名字,因爲這個類的多個集合將會在語義上怪異,也許稱它爲'BootPair'?) – David

+0

您需要某種類型的ffactory來創建in-內存對象來自您的數據庫實體。這幾乎不屬於實際的特徵級IMO。 – HimBromBeere

回答

1

基本問題是很好的引導類中的靜態方法來做到這一點的正確方法,但有一個缺乏信息例如,如果你使用一些ORM,存儲庫或這只是odata請求,因爲我很確定你已經有一堆代碼:)我的方法是使用存儲庫模式的情況下,但對於這種簡單的情況下,你也可以考慮活動記錄模式。如果沒有必要,請記住保持簡單並且不要過度設計。

+0

感謝您的迴應。我將研究存儲庫模式和活動記錄模式。比方說,我沒有使用ORM,只是從數據庫命令中獲取返回到GetBoots函數的數據集。如果你有時間,你能否給我一個你建議的兩種模式的例子? –

+0

首先,如果您使用MS SQL,我建議使用存儲過程而不是函數來處理那種事情。從設計角度來看,功能應該更多地用於計算活動 - 而不是用於收集數據。第二件事是在這種情況下,我會避免使用活動記錄模式並使用存儲庫。我想你使用ADO.NET,所以看看這篇文章:http://blog.gauffin.org/2013/01/04/ado-net-the-right-way/ –

+0

謝謝你的幫助 –