我想知道一般对象是否应该基于构造函数中的一个参数来设置它自己。例如:如果在构造函数中指定对象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. 工厂或构造函数 - 在哪里设置对象属性?
- 3. 设置属性之前的Spring调用对象构造函数
- 4. 更改自己对象中函数内部对象的属性
- 5. 每个注释在构造函数后自动设置属性
- 6. 如何在构造函数中调用承诺对象以设置属性
- 7. 在构造函数中使用mongoose.find()方法设置javascript对象属性
- 8. 从另一个构造函数引用对象的属性时应该使用构造函数还是实例?
- 9. 如何在结构体的构造函数中设置自动属性?
- 10. 在对象的构造函数中使用的属性失败
- 11. 按需或在构造函数中创建属性对象?
- 12. 在构造函数中为我设置共享属性值VB.NET
- 13. 应该使用属性来初始化构造函数中的字段吗?
- 14. c#构造函数vs自动属性和对象初始值设定项
- 15. 构造函数属性 - 关联预先存在的对象?
- 16. 使构造函数只接受C#中[Serializable]属性的对象
- 17. ES6传递一个对象来构造函数,并设置属性
- 18. 如何在EC6上设置构造函数的静态属性
- 19. 应该使用自己的模型对象来管理属性列表吗?
- 20. Enum作为它自己的自定义属性构造函数的参数
- 21. 应该矢量中的所有对象都有复制构造函数吗?
- 22. C#静态类:我应该将该对象传递给构造函数吗?
- 23. ActionScript设置来自其他对象属性的对象属性?
- 24. 我应该明确设置属性吗?
- 25. 在构造函数之前设置字段或属性值
- 26. 如何用自己的函数改变对象的属性?
- 27. 如何在构造函数中创建需要自己的对象? (PHP)
- 28. 应该在课堂上自动设置对象的成员吗?
- 29. JavaScript函数具有相同属性推构造对象数组
- 30. javascript对象模型:奇怪的构造函数属性
你会为每个单独的对象创建一个对象工厂吗?或者,一家制造许多物品的工厂? – 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