2012-10-08 29 views
1

這是一個從json對象解析的簡單bean的實現。這是一個很好的設計,特別是將json解析邏輯放入bean構造器中。這裏是否違反了OOP原則?在單獨的構建器中使用json解析邏輯(第二個構造函數採用鍵名)還是可能位於靜態內部類中會更好?你怎麼看?簡單Bean的Java類設計

class SomeBean{ 

    private String firstName; 
    private String lastName; 

    public SomeBean(JSONObject json){ 
     this.setFields(json, "firstName", "lastName"); 
    } 

    public SomeBean(JSONObject json, String firstNameKey, String lastNameKey){ 
     this.setFields(json, firstNameKey, lastNameKey); 
    } 

    private void setFields(JSONObject json, Sting firstNameKey, String lastNameKey){ 
     this.firstName = json.get(firstNameKey); 
     this.lastName = json.get(lastNameKey); 
    } 

    public String getFirstName(){ 
     return this.firstName; 
    } 

    public String getLastName(){ 
     return this.lastName; 
    } 

} 
+1

我個人而言,將首先提供一個接口,該接口只提供名和姓的獲得者。從那裏我可能會使用某種工廠/生成器來生成基於輸入的實現。這將使實施與世代脫鉤。但是,這只是我 – MadProgrammer

+1

我個人不喜歡把'POJO' bean中的JSON解析邏輯。 –

回答

1

一個bean,或者我稱之爲域類,沒有責任知道關於持久性(如果我們調用的JSON堅持你的bean的方法)。查找GRASP模式:http://en.wikipedia.org/wiki/GRASP_(object-oriented_design) 這些是類和模塊的責任分配模式。 Factory類將更適合從JSON創建bean。這是正確的設計,但是如果你的bean不是很複雜,並且你不希望有任何改變,那就照你的方式做吧。