【发布时间】:2011-05-03 20:27:29
【问题描述】:
一般来说,我想知道一个对象是否应该根据构造函数中的一个参数来设置自己。例如:如果在构造函数中指定了对象 ID,那么对象本身是否应该通过从数据库中获取其他数据来设置自己的变量?或者,是否应显式创建另一个类来创建此对象,然后将数据库从对象中隐藏起来。
【问题讨论】:
标签: object attributes constructor
一般来说,我想知道一个对象是否应该根据构造函数中的一个参数来设置自己。例如:如果在构造函数中指定了对象 ID,那么对象本身是否应该通过从数据库中获取其他数据来设置自己的变量?或者,是否应显式创建另一个类来创建此对象,然后将数据库从对象中隐藏起来。
【问题讨论】:
标签: object attributes constructor
这是我的建议
使用 ObjectFactory 模式进行此基于 ID 的构造。任何开始类似于食谱的东西,ObjectFactory 模式效果最好。
我不建议在 Object 的构造函数中使用对数据库的依赖。您也可以将此数据加载逻辑放在 ObjectFactory 中。
基本上我觉得一个类的实现应该尽量精简。
【讨论】:
另一个类可能应该通过从数据库中读取创建对象所需的值来实例化对象。这是一个更好的关注点分离。保存值的对象可能只是一个 JavaBean,即值保存对象。我当然不会为单个对象添加数据库访问代码。
【讨论】:
取决于场景。但根据经验,您应该尝试将对数据库的访问与对象分开。就个人而言,我可能会选择一个构建器类,它有一个用于数据库访问的可注入接口,并且会返回/构建一个对象。
请注意,在很多情况下,让对象自行创建就可以了。
【讨论】:
如果它足够复杂,您可以考虑实现一个工厂 (http://en.wikipedia.org/wiki/Factory_method_pattern)。
我相信这可能就是您在帖子中描述的“另一个对象”,这有助于创建。
【讨论】: