需要建议以使用合适的设计模式来创建 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 JobStep 创建构造函数,并在其中初始化列表,如下所示:

public class Job {
    private  List<Jobparam> jobparam;
    private  List<Step> step;

    public Job() {
        this.jobparam = new ArrayList<Jobparam>();
        this.step = new ArrayList<Stepparam>();
    } 
}

对于 classes StepparamJobparam 你可以创建一个基础 class 并扩展它,但我认为 Map<String, String> jobparam 和Map<String, String> 步骤可能更适合 List<Jobparam> jobparam 和 List<Step> 步骤,因此您不必定义 classes StepparamJobparam.您可以在 Map.

查看地图文档