我想知道一般對象是否應該基於構造函數中的一個參數來設置它自己。例如:如果在構造函數中指定對象ID,那麼對象本身是否會通過從數據庫中提取其他數據來設置其自己的變量?或者,是否應該明確創建另一個類來創建此對象,然後將該對象隱藏數據庫。對象應該在構造函數中設置自己的屬性嗎?
回答
這裏是我的建議
使用一個ObjectFactory模式基礎上的ID這種結構。任何開始類似於配方的東西,ObjectFactory模式效果最好。
我不建議在對象的構造函數中使用對數據庫的依賴關係。您也可以將此數據加載邏輯放入ObjectFactory中。
基本上,我覺得一個類的實現應該儘可能的精益。
另一個類應該可能通過讀取從數據庫創建它所需的值來實例化對象。這是一個更好的問題分離。保存這些值的對象可能只是一個JavaBean,即保存對象的值。我當然不會將數據庫訪問代碼添加到單個對象。
好吧,這就是我想的,謝謝! 〜這是我編碼我的第一個應用程序,雖然嘿嘿 – Titus 2011-05-03 20:33:13
取決於場景。但作爲一個經驗法則,您應該嘗試從對象中分離對數據庫的訪問權限。就我個人而言,我可能會使用一個構建器類,它有一個用於數據庫訪問的可注入接口,並且會返回/構建一個對象。
請注意,有許多場景可以讓對象創建自己。
如果它足夠複雜,你可以看看實現一個工廠(http://en.wikipedia.org/wiki/Factory_method_pattern)。
我認爲這可能是您在文章中描述的「另一個對象」,它有助於創作。
我發現這個鏈接有點難以遵循,但它是說你可以創建一個工廠,知道如何創建各種不同類型的預先設置的對象? – Titus 2011-05-03 20:39:26
- 1. php對象在構造函數中定義和設置屬性
- 2. Javascript - 在構造函數或構造函數的prototype屬性中設置屬性?
- 3. 工廠或構造函數 - 在哪裏設置對象屬性?
- 4. 在構造函數中設置所有對象的屬性OR初始化後設置對象屬性
- 5. 什麼應該是構造函數屬性值..a原型構造函數或對象構造函數本身
- 6. 設置屬性之前的Spring調用對象構造函數
- 7. 打字稿:如何設置對象屬性在構造函數中(根據對象的屬性)
- 8. 更改自己對象中函數內部對象的屬性
- 9. 每個註釋在構造函數後自動設置屬性
- 10. 如何在構造函數中調用承諾對象以設置屬性
- 11. 在構造函數中使用mongoose.find()方法設置javascript對象屬性
- 12. 如何在結構體的構造函數中設置自動屬性?
- 13. 在對象的構造函數中使用的屬性失敗
- 14. Javascript對象的構造函數的jQuery的getJSON設置屬性失敗
- 15. PHP創建它自己的構造函數內的對象
- 16. 按需或在構造函數中創建屬性對象?
- 17. 在構造函數中爲我設置共享屬性值VB.NET
- 18. 獲取屬性在構造函數中設置
- 19. 應該使用屬性來初始化構造函數中的字段嗎?
- 20. c#構造函數vs自動屬性和對象初始值設定項
- 21. 構造函數的屬性
- 22. 使構造函數只接受C#中[Serializable]屬性的對象
- 23. 構造函數屬性 - 關聯預先存在的對象?
- 24. 應該使用自己的模型對象來管理屬性列表嗎?
- 25. ES6傳遞一個對象來構造函數,並設置屬性
- 26. 如何在EC6上設置構造函數的靜態屬性
- 27. Enum作爲它自己的自定義屬性構造函數的參數
- 28. 如何在構造函數中設置對象枚舉類型?
- 29. 在Oracle對象類型構造函數中設置默認值
- 30. 應該矢量中的所有對象都有複製構造函數嗎?
你會爲每個單獨的對象創建一個對象工廠嗎?或者,一家制造許多物品的工廠? – Titus 2011-05-03 20:40:33
我會爲每個類類型創建一個objectFactory。例如。如果我的課程是'Automobile',那麼我將有一個名爲'AutomobileFactory'的課程,其中包含一些靜態方法,例如'createByName(..)',以便用戶調用通過說'汽車a = AutomobileFactory.createByName(「寶馬」)' – Danish 2011-05-03 20:44:34
'''createByName(..)'然後可以查找數據庫中如何處理名字「寶馬」。我會得到所有需要的細節,並構建一輛汽車 – Danish 2011-05-03 20:45:53