实例化一个类并让它完成工作的最佳方法是什么

时间:2012-02-03 06:17:31

标签: java database class servlets constructor

我正在使用从注册表单中获取参数的servlet,我目前正在使用的是一个java类,它将处理这些参数并将它们存储在Database中,但我觉得我使用这个类的方式是错的。我的代码是这样的:

UserRegister ureg=new UserRegister(name,age,sex,country);

就是这样,我的类中的构造函数将完成从处理数据到将数据存储在db中的整个工作,方法是单独调用UserRegister类中的方法。

这是正确的方法,还是有更好的方法呢?

编辑:我的UserRegister类只对数据进行一些处理,它将调用业务层来存储数据,它本身不会与数据库交互。 我要问的是,当你有一个类,在初始化后只需要在其中执行一系列固定的步骤时,应遵循什么方法

6 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

  

我的类中的构造函数将完成从处理数据到将其存储在db

中的整个作业

错误。永远不要这样编程。

在初步了解它的基本必要性之后,尽快离开c'tor。

创建UserRegister对象的方法。使用该方法调用ureg对象上的方法。

例如:

public void processRequest(name, age, sex, country)
{
    UserRegister ureg=new UserRegister(name,age,sex,country);
    ureg.updateSomeFields();
    ureg.doSomeBusinessLogic();
    ureg.prepareDBData();
    ureg.storeInDb();
}

这只是改善当前设计的一个例子。但是你也应该有一些实用程序类。 class UserRegister应该包含代表用户的数据和行为,只有用户。

设计实用程序类,使它们以格式输入,进行一些计算,然后将输出数据返回给它的调用者。所以,whenevr processRequest方法需要完成一项工作,它不会自己做,而是调用另一个方法(它可能在同一个类或其他类中)

编辑:

  

我要问的是,当你有一个类,在初始化之后只需要在其中执行一系列固定的步骤时,应遵循什么方法

这取决于这些步骤的性质。了解它们是如何相关的。他们与用户有关系吗?如果是,请将它们作为User类中的方法。如果没有,将相关步骤组合在一起,创建一个具有含义全名的类并使用它。在创建单独的类时,尝试以这样的方式设计它们可以用作实用程序,而不仅仅用于当前目的。

答案 2 :(得分:0)

我将查看可用于处理将参数提取到表单中的许多MVC框架之一,然后使用业务层进行处理,并使用持久层进行数据库访问。

查看AppFuse,了解许多MVC框架的示例以及它们如何与其他Java框架集成。即使您最终没有使用它,也会有一些很棒的视频,说明如何有效地利用这些框架组合来评估各种技术以创建3层环境。

答案 3 :(得分:0)

通常最好将功能分解成碎片。这使您能够单独对每个部件进行单元测试。从表单的输入创建用户对象。然后拨打数据访问层以保存用户。

阅读MVC。我个人喜欢Spring MVC。您可以从对象中的表单中获取信息。然后使用服务层进行所需的任何转换。从那里你可以坚持用户。

答案 4 :(得分:0)

构造函数主要用于创建对象的初始化任务。我会将存储在DB中的所有逻辑移动到某些方法。此外,如果在数据库中存储数据的过程需要花费很多时间,那么根据用户的“线程”暂时不是一个好主意,你可以以异步方式完成工作,从Servlet 3支持异步

正如其他人在这里所说的那样,Spring MVC将是一个非常好看的地方。

答案 5 :(得分:0)

我不喜欢这种做法。 UserRegister[] ur = new UserRegister[10]到底会做什么?如果我有UserRegister ur = readfromDatabase(...)怎么办?由于此函数必须创建一个UserRegister才能返回,因此数据会再次保存到数据库中!奇怪而混乱。如果我想保存到文件而不是数据库怎么办?

最好将数据对象创建与数据持久性分开。