2011년 5월 26일 목요일

Replace Type Code with State/Strategy

클래스의 동작에 영향을 미치는 타입코드가 있지만 서브 클래싱을 할수 없을때는 타입코드를 스테이트객체로 바꾸어라
! 동기
  • 이 리팩토링은 Replace Type Code with Subclasses와 비슷하지만, 객체의 존속기간 동안 타입 코드가 바꾸거나 또는 다른 이유로 서브클래싱을 할 수 없는 경우에도 사용될 수 있다.

! 절차
  • 타입 코드를 자체 캡슐화 한다.
  • 새로운 클래스를 만들고 타입 코드의 목적을 잘 나타내도록 이름을 정한다.
  • 각각의 코드에 대해서 스테이트 객체의 서브클래스를 추가한다.
  • 스테이트 객체에 타입 코드를 리턴하는 추상 질의 메소드를 만든다.
  • 스테이트 객체의 서브클래스에서 적절한 타입 코드를 리턴하도록 질의 메소드를 오버라이드한다.
  • 원래의 클래스에 새로 만든 스테이트 객체를 위한 필드를 만든다.
  • 원래의 클래스에 있는 질의 메소드가 스테이트 객체로 작업을 위임하도록 조정한다.
  • 원래의 클래스에서 타입코드 set 메소드가 적절한 스테이트 객체 서브클래스 인스턴스를 할당하도록 조정한다.

! 관련 리팩토링
  • Replace Type Code with Subclasses
  • Replace Conditional with Polymorphism

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

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