2011-05-03 78 views
1

我想知道一般对象是否应该基于构造函数中的一个参数来设置它自己。例如:如果在构造函数中指定对象ID,那么对象本身是否会通过从数据库中提取其他数据来设置其自己的变量?或者,是否应该明确创建另一个类来创建此对象,然后将该对象隐藏数据库。对象应该在构造函数中设置自己的属性吗?

回答

1

这里是我的建议

  1. 使用一个ObjectFactory模式基础上的ID这种结构。任何开始类似于配方的东西,ObjectFactory模式效果最好。

  2. 我不建议在对象的构造函数中使用对数据库的依赖关系。您也可以将此数据加载逻辑放入ObjectFactory中。

基本上,我觉得一个类的实现应该尽可能的精益。

+0

你会为每个单独的对象创建一个对象工厂吗?或者,一家制造许多物品的工厂? – Titus 2011-05-03 20:40:33

+0

我会为每个类类型创建一个objectFactory。例如。如果我的课程是'Automobile',那么我将有一个名为'AutomobileFactory'的课程,其中包含一些静态方法,例如'createByName(..)',以便用户调用通过说'汽车a = AutomobileFactory.createByName(“宝马”)' – Danish 2011-05-03 20:44:34

+0

'''createByName(..)'然后可以查找数据库中如何处理名字“宝马”。我会得到所有需要的细节,并构建一辆汽车 – Danish 2011-05-03 20:45:53

1

另一个类应该可能通过读取从数据库创建它所需的值来实例化对象。这是一个更好的问题分离。保存这些值的对象可能只是一个JavaBean,即保存对象的值。我当然不会将数据库访问代码添加到单个对象。

+0

好吧,这就是我想的,谢谢! 〜这是我编码我的第一个应用程序,虽然嘿嘿 – Titus 2011-05-03 20:33:13

1

取决于场景。但作为一个经验法则,您应该尝试从对象中分离对数据库的访问权限。就我个人而言,我可能会使用一个构建器类,它有一个用于数据库访问的可注入接口,并且会返回/构建一个对象。

请注意,有许多场景可以让对象创建自己。

1

如果它足够复杂,你可以看看实现一个工厂(http://en.wikipedia.org/wiki/Factory_method_pattern)。

我认为这可能是您在文章中描述的“另一个对象”,它有助于创作。

+0

我发现这个链接有点难以遵循,但它是说你可以创建一个工厂,知道如何创建各种不同类型的预先设置的对象? – Titus 2011-05-03 20:39:26

相关问题