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

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

728x90

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

 

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