Skip to content

Latest commit

 

History

History
11 lines (8 loc) · 815 Bytes

12.4 메서드 내리기.md

File metadata and controls

11 lines (8 loc) · 815 Bytes

특정 서브클래스 하나와만 관련된 메서드(본문에선 quota())는 슈퍼클래스에서 제거하고 해당 서브클래스에 추가하는게 훨신 깔끔하다.

이 리팩터링은 해당 기능을 제공하는 서브클래스가 정확히 무엇인지 호출자가 알고 있을 때만 적용 가능. 그렇지 않다면 서브클래스에 따라 다르게 동작하는 슈퍼클래스의 조건부 로직을 다형성으로 바꿔야함(10.4절 유럽 제비, 아프리카 제비 —> 조건부 로직을 직관적으로 구조화함) .

절차

  1. 대상 메서드를 모든 서브클래스에 복사한다.
  2. 슈퍼클래스에서 그 메서드를 제거한다.
  3. 테스트.
  4. 이 메서드를 사용하지 않는 모든 서브클래스에서 제거한다.
  5. 다시 테스트.