用于创建对象的Java模式

时间:2012-11-09 02:25:37

标签: java

我最近的曝光主要是针对非OOP语言的,所以我们想知道下面的任何模式或做法。

我需要编写一个函数,它接受一个json字符串(json对象数组)并生成对象列表(比如Student)。我检查了creational patterns,但似乎不合适。你认为我应该编写一个帮助类来创建这些对象。

3 个答案:

答案 0 :(得分:1)

如果你已经拥有一种util类,那么这类函数很适合该类。我不会为此而完全独立的课程。例如,像:

public static List<Student> parseJsonToStudents(String jsonData) ...

但是,您可以在Student类中使用构造函数,该构造函数接受json String作为参数,并从中构造Student对象。 肯定会利用OO原则。但是GSON package使得很多这类东西过时了,你可能不想打扰自己编程。它有fromJson()toJson()方法,它们将解析数据并为您构建对象。

答案 1 :(得分:1)

您可以编写一个接受JSON字符串和类对象的方法,并返回包含给定类型对象的列表:

public static <T> List<T> parseJsonList(String json, Class<T> theClass) {
    // do stuff
}

用法:

List<Student> studentList = parseJsonList(studentJsonText, Student.class);
List<Teacher> teacherList = parseJsonList(teacherJsonText, Teacher.class);

正如@Jeff所提到的,为学生教师创建接受JSON字符串的构造函数可能会更好。

或者您可以在Student类中使用静态方法从JSON字符串创建学生列表。

或者您可以创建一个ObjectFactory类来创建不同类型的对象。

答案 2 :(得分:0)

public class Action {

  public static class Response {

    private int _resultCode;
    private int _count = 0;

    public Response() {}

    public int getResultCode() { return _resultCode; }
    public int getCount() { return _count; }

    public void setResultCode(int rc) { _resultCode = rc; }
    public void setCount(int c) { _count = c; }
  }

  private List<Response> responses = new ArrayList<Response>();
  private String _name;
}