2012-10-08 4 views
1

이것은 json 객체로부터 파싱 된 간단한 bean의 구현물이다. 이것은 좋은 디자인인가, 특히 json 구문 분석 로직을 빈 생성자에 넣는 것입니다. OOP 원칙이 위반 되었습니까? 별도의 빌더에서 json 구문 분석 논리 (키 이름을 사용하는 두 번째 생성자)를 사용하는 것이 더 좋은 설계입니까? 아니면 정적 내부 클래스에있을 수 있습니까? 당신의 생각은 무엇입니까?간단한 콩을위한 자바 클래스 디자인

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

개인적으로 JSON 구문 분석 논리를'POJO' 빈 내에 두는 것을 선호하지 않습니다. –

답변

1

내가 도메인 클래스를 부르는 빈 또는, (우리는 JSON 여러분의 빈을 지속하는 방법을 호출하는 경우) 지속성에 대해 알고 책임이 없습니다. GRASP 패턴 조회 : http://en.wikipedia.org/wiki/GRASP_(object-oriented_design) 클래스 및 모듈에 대한 책임 할당 패턴입니다. Factory 클래스는 JSON에서 빈을 생성하는 데 훨씬 더 적합합니다. 이것은 적절한 디자인이지만 빈이 복잡하지 않고 변경 사항을 기대하지 않는다면 자신의 방식대로 수행하십시오.