Egloos | Log-in


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

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 이피 | 2007/12/20 22:06 | 트랙백(1) | 핑백(1) | 덧글(2)

트랙백 주소 : http://colus.egloos.com/tb/4023119
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from ologist`s bl.. at 2007/12/21 00:09

제목 : Value Object is Immutable!
value object를 사용을 하고 싶은데, 자바빈 규약을 따르기 위해서 setter를 만드는 경우가 있다.보통의 경우 찜찜하게 setter를 만드는 경우가 많은데, 그 setter를 최대한 숨겨서 처리가 가능하다.이 문제를 해결하기 위해서 EP님은 다음과 같은 포스트를 남겼다.mutable코드가 있는 포스트 : http://colus.egloos.com/4023119 protected 접근자 덕택에 같은 패키지 내에서 직접 프러퍼티에 접근이......more

Linked at Life is wonder-f.. at 2008/07/14 01:03

... 안하지 않다. 혹Mutable로 업캐스팅 해서 몰래 값을 바꾼다고 해도 Mutable을 참조하는 곳을 찾으면 어디서 바꾸는지 쉽게 제거할 수있다. 3. 참고Separating concerns... 초기 아이디어. MethodChaining Mutable의 setter가 Mutable을 돌려주어 편리하게 사용할 수 있도록 변경했다. Google ... more

Commented by 래퍼백곰 at 2007/12/20 23:18
deprecate 하는 것 보다는 용도를 명확히 할 수 있으니까 뮤터블 객체를 사용하는게 더 좋아 보이네요
Commented by ologist at 2007/12/20 23:36
이거 다음 IP 스터디에서 VO할때 같이 얘기를 해보죠

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶