(6) 1부 화폐예제 - 11,12장 드디어, 더하기

2021. 4. 9. 17:28개발공부/테스트 주도 개발

Github 코드보기

 

11장 모든 악의 근원


하위 클래스 기능을 모두 상위 클래스로 이관해줍니다. 과정에서 코드 의미를 변경하지 않고 하위 클래스에 대한 참조를 상위 클래스에 대한 참조로 변경할 수 있습니다.

  • Money.franc() 변경

12장 드디어, 더하기


서로 다른 통화를 더하는 기능 테스트를 위해 Money 객체와 외부 프로토콜은 같으면서 내부 구조는 두 Money의 합을 나타내는 새로운 객체(imposter)를 만들고자 합니다.

Expression은 연산의 결과, Bank는 환율을 적용해 단일통화로 축약하는 객체입니다. 인터페이스가 더 가볍기 때문에 Expression은 인터페이스로 생성해줬습니다.

1
2
3
4
5
6
7
8
@Test
    public void testSimpleAddition() {
        Money five = Money.dollar(5);
        Expression sum = five.plus(five);
        Bank bank = new Bank();
        Money reduced = bank.reduce(sum, "USD");
        assertEquals(Money.dollar(10), reduced);
    }
cs

 

출처 : 테스트 주도 개발 - 켄트 벡