![](/img/trans.png)
[英]Is it bad practice to have lots of private static methods within my Webservice
[英]Is it bad practice to populate lots of data in a constructor?
在構造函數中進行所有數據導入是不好的做法嗎? 還是使用靜態工廠方法更適合創建對象,填充對象然后返回它?
我肯定有一些對象可以將所有數據准備就緒,例如數據驅動的單例對象,例如擴展的Hashmap,這些對象在構造時會從數據庫中提取數據。 我發現這種方法比延遲初始化更好,尤其是在並發環境中。 但是我做錯了嗎?
class MyHashMap extends HashMap<MyKey, MyObject>
{
private MyHashMap() {
populateFromDb();
}
}
如果一切都記錄到已創建對象的狀態,則沒有任何“錯誤”。
但是,從體系結構的角度來看,您應該在某個位置上運行所有業務代碼。 這是您發出數據庫連接並讀取數據的地方。 您甚至可以編寫一個單獨的類來執行填充任務。
原因:
在某些情況下,您想用其他方法代替人口機制。 例如,在單元測試中,您可能想用一些硬編碼的測試數據填充數據,因此您不需要用於單元測試的數據庫。
從理論上講,擁有龐大的構造函數沒有錯。 但是,也許像工廠這樣的創新設計模式會有所幫助。 約書亞·布洛赫(Joshua Bloch)-在他的《有效的Java》一書中建議在構造函數上使用工廠,在大型參數化構造函數上使用構建器。 構建器模式允許您分步創建對象。 您一次需要所有數據嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.