-
리팩토링 : Replace Conditional with Polymorphism리팩토링 2013. 1. 31. 22:30
조건
객체의 타입에 따라서 다른 행동을 하는 조건이 있다면
적용
각 조건의 내용을 서브클래스의 메소드로 오버라이딩하도록 옮기고,
원본 메소드는 추상메소드로 변경하시오.
적용전
double getSpeed() { switch (_type) { case EUROPEAN: return getBaseSpeed(); case AFRICAN: return getBaseSpeed() - getLoadFactor() * _numberOfCoconuts; case NORWEGIAN_BLUE: return (_isNailed) ? 0 : getBaseSpeed(_voltage); } throw new RuntimeException ("Should be unreachable"); }
적용후
참조
http://www.refactoring.com/catalog/replaceConditionalWithPolymorphism.html
'리팩토링' 카테고리의 다른 글
리팩토링 : Replace Constructor with Factory Method (0) 2013.02.02 리팩토링 : Replace Conditional with Visitor (0) 2013.02.01 리팩토링 : Replace Assignment with Initialization (0) 2013.01.30 리팩토링 : Replace Array with Object (0) 2013.01.29 리팩토링 : Rename Method (0) 2013.01.28 댓글