'테스트 주도 개발' 예제 중에 질문입니다.
글쓴이: greathj / 작성시간: 금, 2008/06/13 - 9:38오전
어제 '테스트 주도 개발'을 구입해서 읽고 있습니다.
8장에 보면 Money, Dollar, Franc 클래스를 이용하여 아래와 같은 자바 예제가 나옵니다.
Money는 Dollar, Franc의 부모클래스입니다. 그런데 Money안에서 static factory method를 아래와 같이 구현해서 사용합니다.
Money
static Dollar dollar(int amount) {
return new Dollar(amount);
}
Money
static Franc franc(int amount) {
return new Franc(amount);
}
위와 같이 부모클래스에서 자식클래스의 인스턴스를 생성하도록 하는 것이 일반적인 방법인지요? 참고로 저는 C++만 사용해온지라 자바에 대해서는 잘 모르는 상황입니다. C++로도 Dollar, Franc을 Money앞에 전방선언 해놓으면 유사하게 구현은 가능할 것 같은데 이런 식의 구현은 사용해본 기억이 없어서 질문드립니다. 부모클래스가 자식클래스에 대하여 의존성을 갖게 되는 문제가 생길 것 같은데 이를 감안할 만한 장점이 많이 있는 것인가요? 좀더 유연할 것 같긴한데... 역시 상황에 따른 선택의 문제인가요?^^;
Forums:
원래 팩토리 클래스가 그렇습니다.
팩토리 메써드 패턴을 응용한 예제로 알고 있습니다. 별개의 팩토리 클래스를 만들어 인스턴스 생성을 담당하게 할 수도 있지만 저런 식으로 공통 인터페이스를 가진 클래스에서 생성을 담당할 수도 있죠. 어느 쪽이든 Money클래스의 서브클래스가 추가되면 팩토리 역할을 하는 클래스도 메써드가 추가가 되어야 하는 것은 마찬가지겠죠.
저기서 의존성은 생성자 하나가 걸리네요.
---------- 시그 *****
저도 세벌식을 씁니다.
M$윈도우즈, 리눅스, 맥 오에스 텐, 맥 오에스 클래식을 모두 엔드유저 수준으로 쓴답니다.
http://psg9.egloos.com
=================
잠못자는 한솔아빠
greathj님이 생각하시는데로
저두
를 상속받게 할 것 같습니다.
MoneyFactory클래스에서 원하는 돈을 만들어 주고요 ++;
아마 책에서는 클래스를 좀 줄이고 싶었나 모르겠네요.
이런 경우에는 유효할 지도 모르겠습니다.
Money에
Money.getTotalDollar()
Money.getTotalFranc()
Money.getTotalMoney()
같은 간단한 활용이 필요한 경우 Money안으로 모두 넣어 버릴 수도 있을 것 같기도 하군요.
복잡해 진다면 역시 클래스들을 다시 생각해서 나눠야 할 것 같고요.
여튼 최대한 심플하게 만들면서
어떤 시점에서 대상을 바라 보느냐에 따라서
유동적으로 클래스 구성을 하는 경우가 많은 것 같습니다.
댓글 달기