리팩토링 과정에서 다형성(polymorphism)을 활용한 구조 변경
- 구조 도입으로 코드 크기 증가
- 코드가 길어졌지만, 연극의 종류별 계산이 그룹화되어 유지보수가 쉬워짐
- 새로운 연극 종류를 추가하려면 서브클래스를 작성하고 생성 함수에 추가하면 됨
- 서브클래스를 사용할 때의 유용성
- 다형성을 활용하여 amountFor와 volumeCreditsFor 함수에서 조건부 처리를 하나의 생성자 함수(createPerformanceCalculator)로 통합함
- 동일한 다형성에 의존하는 함수가 많을수록 서브클래스를 활용한 접근이 더욱 유용
- 대체 방법
- createPerformanceData (또는 createStatementData)가 계산기 객체를 반환하도록 하고, 그 계산기 객체가 직접적으로 중간 데이터 구조를 채우는 대신, 계산기를 반환하여 다음 단계에서 직접 계산을 수행하는 방식
- 계산을 담당하는 객체를 외부에서 활용하는 방식