我对有效内存使用的问题很少。我有一个表单,将提交以接收结果项目列表。提交表单后,其字段将由请求变量接收,并将由submitRequest
模型类方法处理。
问题是我应该在哪里分配内存来请求变量(Request request = new Request
)?在构造函数?或者根本不分配它,因为它现在有效吗?
第二个问题是我应该在哪里制作Model
类的对象,因为它被不同的方法使用。我应该在每个方法中定义它还是最好有一个单独的对象?
public class MyClass{
private Request request;
private List<result> results;
//private formModel myModel = new formModel();
public MyClass(){
}
public String myForm(){
formModel myModel = new formModel();
this.results = myModel.submitRequest(request); //process request and return results
return "SUCCESS";
}
.......
}
答案 0 :(得分:0)
我应该在哪里分配内存来请求变量(请求请求=新请求)?在构造函数?或者根本不分配它,因为它现在有效吗?
实际上这应该不是问题,因为Java关心所有的内存。在声明变量时可以初始化变量。在这种情况下,无法获得NullPointerException
,因为变量应该已经初始化。
当然,当您这样做时,您会在创建对象时初始化所有变量。但同样,这不应该是性能问题。
我应该在哪里创建Model类的对象,因为它被不同的方法使用。我应该在每个方法中定义它还是最好有一个单独的对象?
关于模型实例,它取决于。如果要在多个方法上共享一个对象,最好创建一个私有类变量。
否则,如果您只想在其中一个方法中使用模型实例,那么您应该只在该方法中创建变量。
答案 1 :(得分:0)
我应该在哪里分配内存来请求变量(请求请求=新请求)?在构造函数?或者根本不分配它,因为它现在有效吗?
您可以在代码中的任何位置,构造函数,内联,惰性,通过容器,使用其他DI框架,使用Struts类型转换,拦截器等执行此操作。您应遵循的是Java Bean约定。
我应该在哪里创建Model类的对象,因为它被不同的方法使用。我应该在每个方法中定义它还是最好有一个单独的对象?
第二个问题涉及动作类对象的线程安全性。在Struts的前一个主要版本中,用户bean作为参数传递给操作方法是线程安全的,因为操作类不是。
在当前版本的Struts中,操作类是线程安全的,因为每个操作调用都会创建操作类的新实例。您可以为动作类中的Model
创建一个可由不同方法使用的属性。在这种情况下,您可以定义正在使用的对象的范围。