Object 对象应该在构造函数中设置自己的属性吗?

Object 对象应该在构造函数中设置自己的属性吗?,object,attributes,constructor,Object,Attributes,Constructor,一般来说,我想知道对象是否应该基于构造函数中的一个参数来设置自身。例如:如果在构造函数中指定了对象ID,那么对象本身是否应该通过从数据库中获取其他数据来设置自己的变量?或者,如果为创建此对象而显式创建另一个类,则会对该对象隐藏数据库。以下是我的建议 基于ID使用ObjectFactory模式进行此构造。任何开始类似于配方的东西,ObjectFactory模式都最有效 我不建议在对象的构造函数中使用对数据库的依赖关系。您也可以将此数据加载逻辑放在ObjectFactory中 基本上,我觉得类的实现

一般来说,我想知道对象是否应该基于构造函数中的一个参数来设置自身。例如:如果在构造函数中指定了对象ID,那么对象本身是否应该通过从数据库中获取其他数据来设置自己的变量?或者,如果为创建此对象而显式创建另一个类,则会对该对象隐藏数据库。

以下是我的建议

  • 基于ID使用ObjectFactory模式进行此构造。任何开始类似于配方的东西,ObjectFactory模式都最有效

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


  • 基本上,我觉得类的实现应该尽可能精简。

    以下是我的建议

  • 基于ID使用ObjectFactory模式进行此构造。任何开始类似于配方的东西,ObjectFactory模式都最有效

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


  • 基本上,我觉得类的实现应该尽可能精简。

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

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

    取决于场景。但根据经验,您应该尝试将对数据库的访问与对象的访问分开。就我个人而言,我可能会使用一个builder类,它有一个用于数据库访问的可注入接口,并将返回/构建一个对象


    请注意,在很多情况下,让对象自己创建是可以的

    取决于场景。但根据经验,您应该尝试将对数据库的访问与对象的访问分开。就我个人而言,我可能会使用一个builder类,它有一个用于数据库访问的可注入接口,并将返回/构建一个对象


    请注意,在很多情况下,让对象自己创建是可以的

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


    我相信这可能就是你在文章中用“另一个对象”描述的,它有助于创作

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


    我相信这可能就是你在文章中用“另一个对象”描述的,它有助于创作

    好的,太好了,我就是这么想的,谢谢~这是我如何编写我的第一个应用程序,虽然呵呵,太好了,这就是我的想法,谢谢~这是我如何编写我的第一个应用程序尽管heheI发现链接有点难以理解,但它是说你可以创建一个知道如何创建各种不同类型的预设对象的工厂吗?我发现链接有点难以理解,但这是否意味着你可以创建一个工厂,知道如何创建各种不同类型的预设对象?你会为每个对象创建一个对象工厂吗?或者,一个工厂创建多个对象?我会为每个类类型创建一个objectFactory。例如,如果我的类是“Automobile”,我将有一个名为“AutomobileFactory”的类,其中包含一组静态方法,例如“createByName(..”),因此用户可以通过说“Automobile a=AutomobileFactory.createByName(“BMW”)”来调用它。“createByName(..”)然后可以在数据库中查找如何处理名称“BMW”。我会得到所有需要的细节并建造一辆汽车你能为每个单独的物体创建一个物体工厂吗?或者,一个工厂创建多个对象?我会为每个类类型创建一个objectFactory。例如,如果我的类是“Automobile”,我将有一个名为“AutomobileFactory”的类,其中包含一组静态方法,例如“createByName(..”),因此用户可以通过说“Automobile a=AutomobileFactory.createByName(“BMW”)”来调用它。“createByName(..”)然后可以在数据库中查找如何处理名称“BMW”。我会得到所有需要的细节并建造一辆汽车