2012-11-09 69 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