2

我对有效的内存使用没有几个问题。我有一个表格,将提交以接收项目列表作为结果。一旦提交表单,其字段将由请求变量接收,并将由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";
  }
  .......
}
4

2 回答 2

0

我应该在哪里为请求变量分配内存(请求请求 = 新请求)?在构造函数中?或者根本不分配它,因为它现在可以工作?

实际上这应该不是问题,因为 Java 关心所有的内存。声明变量时可以对其进行初始化。在这种情况下,不可能获得 a NullPointerException,因为变量应该已经初始化。

当然,当您这样做时,您会在创建对象时初始化所有变量。但同样,这不应该是性能问题。

我应该在哪里创建 Model 类的对象,因为它被不同的方法使用。我应该在每种方法中定义它还是最好有一个对象?

关于模型实例,这取决于。如果您想通过多个方法共享一个对象,最好创建一个私有类变量。

否则,如果您只想在其中一个方法中使用模型实例,那么您应该只在该方法中创建变量。

于 2013-11-27T09:42:28.417 回答
0

我应该在哪里为请求变量分配内存(请求请求 = 新请求)?在构造函数中?或者根本不分配它,因为它现在可以工作?

您可以在代码中的任何位置执行此操作,在构造函数中、内联、惰性、通过容器、使用其他 DI 框架、使用 Struts 类型转换、拦截器等。您应该遵循的是 Java Bean 约定。

我应该在哪里创建 Model 类的对象,因为它被不同的方法使用。我应该在每种方法中定义它还是最好有一个对象?

第二个问题是针对动作类对象的线程安全性。在以前的 Struts 主要版本中,用户 bean 作为参数传递给操作方法以实现线程安全,因为操作类不是。

在当前版本的 Struts 中,动作类是线程安全的,因为动作类的新实例是在每次动作调用时创建的。Model您可以在动作类中为不同方法使用的属性创建一个属性。在这种情况下,您可以定义正在使用的对象的范围。

于 2013-11-27T14:57:10.197 回答