2011년 5월 26일 목요일

Replace Type Code with Subclasses

클래스의 동작에 영향을 미치는 변경 불가능한 타입 코드가 있다면 타입 코드를 서브 클래스로 바꾸어라.


! 동기
  • 클래스의 동작에 영향을 미치지 않는 타입 코드가 있다면 Replace Type Code with Class 를 사용한다.
  • 그러나 타입코드가 동작에 영향을 미치는 경우에는 다형성을 사용하여 여러가지 동작을 처리하도록 하는 것이 좋다.
  • 이런 상황은 보통 조건문이 많은 경우에 발생한다.
  • Replacd Type Code with Subclasses는 주로 Replace Conditional with Polymorphism을 가능하게 하기 위한 발판이 된다.
  • 특정 타입 코드를 가지는 객체에만 관련된 기능이 있을 때 좋다.
  • 이 패턴의 장점은 변화하기 쉬운 동작에 대한 정보를 클래스의 클라이언트 코드에서 클래스 자체로 옮긴다는 것이다.
  • 만약 새로운 동작이 추가되면 단지 서브 클래스를 추가하기만 하면 된다.

! 절차
  • 타입 코드를 찾아 캡슐화한다.
  • 각각의 타입코드에 대한 서브클래스를 생성한다.
  • 서브클래스에서 타입 코드를 얻는 get메소드를 오버라이드 하여 관련된 값을 리턴하도록 한다.
  • 각각의 타입 코드를 서브 클래스로 바꾸고 난 후에 컴파일, 테스트 한다.
  • 수퍼 클래스에서 타입 필드를 제거한다. 타입코드에 대한 접근자를 abstract 로 한다.

! 관련 리팩토링
  • Replace Type Code with Class\
  • Replace Conditional with Polymorphism
  • Replace Type Code with State/Strategy

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...