특정 서브클래스 하나와만 관련된 메서드(본문에선 quota())는 슈퍼클래스에서 제거하고 해당 서브클래스에 추가하는게 훨신 깔끔하다.
이 리팩터링은 해당 기능을 제공하는 서브클래스가 정확히 무엇인지 호출자가 알고 있을 때만 적용 가능. 그렇지 않다면 서브클래스에 따라 다르게 동작하는 슈퍼클래스의 조건부 로직을 다형성으로 바꿔야함(10.4절 유럽 제비, 아프리카 제비 —> 조건부 로직을 직관적으로 구조화함) .
- 대상 메서드를 모든 서브클래스에 복사한다.
- 슈퍼클래스에서 그 메서드를 제거한다.
- 테스트.
- 이 메서드를 사용하지 않는 모든 서브클래스에서 제거한다.
- 다시 테스트.