2007년 12월 20일
Separating concerns...
의미상으로는 Value Object임에도 불구하고 JavaBeans 규약을 따르는 다른 API를 사용하기 때문에 어쩔 수 없이 setter를 만들어야 하는 경우가 있다. 정상적인 코드에서는 호출 되지 말아야하는 setter 호출을 어떻게 하면 한 눈에 알 수 있을까? 처음에는 setter에 @deprecated 표시를 하는 방법이 생각했다. 오늘 하나 더 생각났다. 아래와 같이 Mutable 클래스를 따로 만들어 주면 어떨까? 이렇게 하면 ORM 등JavaBeans 규약을 따르는 API에서 입력 받을 때만 Mutable 객체를 사용할 수 있을 것 같다.

public class Post {
protected String title;
protected String content;
public Post(String title, String content) {
assert StringUtils.isNotBlank(title) && StringUtils.isNotBlank(content);
this.title = title;
this.content = content;
}
public String getTitle() { return title; }
public String getContent() { return content; }
public static class Mutable extends Post {
public Mutable() {
super(null, null);
}
public void setTitle(String title) { this.title = title; }
public void setContent(String content) { this.content = content; }
}
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- java.lang.Object 메쏘드 분석 1 - getClass by 삼실청년
- 어느게 더 빠를까요? by 백승우
- java.lang.Object 메쏘드 분석 2 - equals by 삼실청년
- Junit에서 private 메소드 실행하기 by NuRi
- this 객체 by 바보나무
# by | 2007/12/20 22:06 | 트랙백(1) | 핑백(1) | 덧글(2)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : Value Object is Immutable!
value object를 사용을 하고 싶은데, 자바빈 규약을 따르기 위해서 setter를 만드는 경우가 있다.보통의 경우 찜찜하게 setter를 만드는 경우가 많은데, 그 setter를 최대한 숨겨서 처리가 가능하다.이 문제를 해결하기 위해서 EP님은 다음과 같은 포스트를 남겼다.mutable코드가 있는 포스트 : http://colus.egloos.com/4023119 protected 접근자 덕택에 같은 패키지 내에서 직접 프러퍼티에 접근이......more
... 안하지 않다. 혹Mutable로 업캐스팅 해서 몰래 값을 바꾼다고 해도 Mutable을 참조하는 곳을 찾으면 어디서 바꾸는지 쉽게 제거할 수있다. 3. 참고Separating concerns... 초기 아이디어. MethodChaining Mutable의 setter가 Mutable을 돌려주어 편리하게 사용할 수 있도록 변경했다. Google ... more