我正在使用从注册表单中获取参数的servlet,我目前正在使用的是一个java类,它将处理这些参数并将它们存储在Database中,但我觉得我使用这个类的方式是错的。我的代码是这样的:
UserRegister ureg=new UserRegister(name,age,sex,country);
就是这样,我的类中的构造函数将完成从处理数据到将数据存储在db中的整个工作,方法是单独调用UserRegister类中的方法。
这是正确的方法,还是有更好的方法呢?
编辑:我的UserRegister类只对数据进行一些处理,它将调用业务层来存储数据,它本身不会与数据库交互。 我要问的是,当你有一个类,在初始化后只需要在其中执行一系列固定的步骤时,应遵循什么方法答案 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支持异步/ p>
正如其他人在这里所说的那样,Spring MVC将是一个非常好看的地方。
答案 5 :(得分:0)
我不喜欢这种做法。 UserRegister[] ur = new UserRegister[10]
到底会做什么?如果我有UserRegister ur = readfromDatabase(...)
怎么办?由于此函数必须创建一个UserRegister
才能返回,因此数据会再次保存到数据库中!奇怪而混乱。如果我想保存到文件而不是数据库怎么办?
最好将数据对象创建与数据持久性分开。