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

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...