需要建议以使用合适的设计模式来创建 JAVA 个对象
Need suggestion to use suitable design pattern to create JAVA objects
我目前有以下父子关系 java 个对象
JCL > 作业 > 步骤 > 步骤 > dd
Class 如下所示
public class Jcl {
Private Job job;
}
public class Job {
private String jobname;
//Below is direct property of job object
private List<Jobparam> jobparam;
//Below is child object of the job object
private List<Step> step;
}
public class Step {
private String stepname;
//Below is direct property of step object
private List<Stepparam> stepparam;
//Below is child object of the step object
private List<Ddstatement> ddstatement;
}
public class Stepparam {
private String name;
private String value;
}
public class Jobparam{
private String name;
private String value;
}
我正在使用 getter 和 setter 使用每个对象的新实例创建对象。
Job job = new Job();
ArrayList<Jobparam> myList = new ArrayList<Jobparam>();
job.getJobparam().addAll(myList);
Step step = new Step();
ArrayList<Stepparam> myList = new ArrayList<Stepparam>();
jcl.getJob().getStep().add(step);
而且 jobparam 和 stepparam 也有相同的 属性。(我想重用但不知道如何重用)
我觉得我每次都在创建每个新对象,java 设计模式可以避免这种冗长的编码。
任何关于我应该如何继续制作简单代码的建议都会有所帮助。
public class Jcl {
Private Job job;
}
上面的片段并不是真正的父子关系。您只是在定义 class 的属性,您已经定义了它。
然而,这种层次关系可用于简化您的最后两个 classes 例如:
public class Parent {
private String name;
private String value;
}
public class Stepparam extends Parent {
// whatever makes it different from Jobparam
}
public class Jobparam extends Parent {
// whatever makes it different from Stepparam
}
我建议您 google object relations in java
或查看 this article。
我建议为参数类型创建一个通用的 class,因为它们是相同的
public class Parameter {
private String name;
private String value;
}
然后将工作和步骤列表成员声明为
List<Parameter> ...
我还建议添加用于向列表添加内容的包装器方法,它使代码更清晰并且列表被隐藏,如果需要,更改为另一种集合类型将更容易。例如
public class Job {
//other stuff
public void addJobParameter(Parameter parameter) {
jobparam.add(parameter);
}
// and/or
public void addJobParameters(Collection<Parameter> parameters) {
jobparam.addAll(parameters);
}
您可以为 classes Job
和 Step
创建构造函数,并在其中初始化列表,如下所示:
public class Job {
private List<Jobparam> jobparam;
private List<Step> step;
public Job() {
this.jobparam = new ArrayList<Jobparam>();
this.step = new ArrayList<Stepparam>();
}
}
对于 classes Stepparam
和 Jobparam
你可以创建一个基础 class 并扩展它,但我认为 Map<String, String>
jobparam 和Map<String, String>
步骤可能更适合 List<Jobparam>
jobparam 和 List<Step>
步骤,因此您不必定义 classes Stepparam
和 Jobparam
.您可以在 Map.
查看地图文档
我目前有以下父子关系 java 个对象 JCL > 作业 > 步骤 > 步骤 > dd
Class 如下所示
public class Jcl {
Private Job job;
}
public class Job {
private String jobname;
//Below is direct property of job object
private List<Jobparam> jobparam;
//Below is child object of the job object
private List<Step> step;
}
public class Step {
private String stepname;
//Below is direct property of step object
private List<Stepparam> stepparam;
//Below is child object of the step object
private List<Ddstatement> ddstatement;
}
public class Stepparam {
private String name;
private String value;
}
public class Jobparam{
private String name;
private String value;
}
我正在使用 getter 和 setter 使用每个对象的新实例创建对象。
Job job = new Job();
ArrayList<Jobparam> myList = new ArrayList<Jobparam>();
job.getJobparam().addAll(myList);
Step step = new Step();
ArrayList<Stepparam> myList = new ArrayList<Stepparam>();
jcl.getJob().getStep().add(step);
而且 jobparam 和 stepparam 也有相同的 属性。(我想重用但不知道如何重用) 我觉得我每次都在创建每个新对象,java 设计模式可以避免这种冗长的编码。 任何关于我应该如何继续制作简单代码的建议都会有所帮助。
public class Jcl {
Private Job job;
}
上面的片段并不是真正的父子关系。您只是在定义 class 的属性,您已经定义了它。
然而,这种层次关系可用于简化您的最后两个 classes 例如:
public class Parent {
private String name;
private String value;
}
public class Stepparam extends Parent {
// whatever makes it different from Jobparam
}
public class Jobparam extends Parent {
// whatever makes it different from Stepparam
}
我建议您 google object relations in java
或查看 this article。
我建议为参数类型创建一个通用的 class,因为它们是相同的
public class Parameter {
private String name;
private String value;
}
然后将工作和步骤列表成员声明为
List<Parameter> ...
我还建议添加用于向列表添加内容的包装器方法,它使代码更清晰并且列表被隐藏,如果需要,更改为另一种集合类型将更容易。例如
public class Job {
//other stuff
public void addJobParameter(Parameter parameter) {
jobparam.add(parameter);
}
// and/or
public void addJobParameters(Collection<Parameter> parameters) {
jobparam.addAll(parameters);
}
您可以为 classes Job
和 Step
创建构造函数,并在其中初始化列表,如下所示:
public class Job {
private List<Jobparam> jobparam;
private List<Step> step;
public Job() {
this.jobparam = new ArrayList<Jobparam>();
this.step = new ArrayList<Stepparam>();
}
}
对于 classes Stepparam
和 Jobparam
你可以创建一个基础 class 并扩展它,但我认为 Map<String, String>
jobparam 和Map<String, String>
步骤可能更适合 List<Jobparam>
jobparam 和 List<Step>
步骤,因此您不必定义 classes Stepparam
和 Jobparam
.您可以在 Map.