在對象中加載數據時是否有任何最佳實踐或指導原則?對象一旦創建就應該加載一個對象中的所有數據?
例如。您正在進行問卷調查。問卷包含問題。問題的數量可以在0-500之間變化。問卷中包含一種稱爲GetAllQuestions()
的方法。
這是我的觀點。是否建議創建一個成員變量(假設類型爲Collection<Question>
的_allQuestions
)並在構造函數中填充該變量?代碼:
public class Questionnaire
{
Collection<Question> _allQuestions;
public Questionnaire()
{
_allQuestions = new Collection<Question>();
LoadAllQuestions();
}
public Collection<Question> GetAllQuestions()
{
return _allQuestions;
}
private void LoadAllQuestions()
{
// Some database stuff and fill _allQuestions
}
}
或者是現在回答所有問題有更好的要求。代碼:
public class Questionnaire
{
public Questionnaire()
{
}
public Collection<Question> LoadAllQuestions()
{
// Some database stuff
// Create and fill an object with all the questions
// return the object
}
}
在最後一種情況下,我看到一個缺點。如果您將此方法稱爲十次,該怎麼辦?然後對相同的數據訪問數據庫十次。所以在這種情況下,你可以選擇第一種情況。但是如果刪除或添加了一些問題呢?然後列表不一致。
這只是一個例子。當我不知道該怎麼做時,有更多的情況。我什麼時候應該加載什麼數據。
我在想,是否有一些指導方針或最佳實踐何時加載一個對象的數據?
+1初始加載後進行緩存 – adriaanp 2010-07-22 10:33:12
聲音合乎邏輯。但是當一個問題被刪除,添加或修改時該怎麼辦? – Martijn 2010-07-22 10:34:19
@Martijn - 你能否讓處理刪除,添加和修改問題的代碼在事件發生時引發事件?然後,Quiestionnaire可以觀看該事件並「忘記」它的問題(即_allQuestions = null),以便在下一次請求時重新加載它們。 – IanR 2010-07-22 10:44:58