2012-11-09 70 views
1

我最近的曝光主要是针对非OOP语言的,所以想要进行下面的任何模式或练习。用于创建对象的Java模式

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

回答

1

如果您已经有一类util类,这种类型的函数将很适合该类。我不会为此做一个完全独立的课程。举例来说,像这样:

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

你可以,但是,在你的Student类的构造函数,它接受一个JSON字符串作为参数,并从构建Student对象。 肯定会利用面向对象的原则。但GSON package呈现了很多类似的东西过时,你可能不想麻烦编程它自己。它有fromJson()toJson()这些方法可以解析数据并为你构建对象。

+0

有趣的是,我在Android中使用它,并在某处使用GSON。将进一步探索。谢谢 – bsr

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类来创建不同类型的对象。

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; 
} 
+1

欢迎来到SO,关于你的答案的一些解释将是一个好主意。 – mnel