객체 타입에 따라 다른 기능을 실행하는 조건문이 있을 땐 조건문의 각 절을 하위클래스의 재정의 메소드 안으로 옮기고 원본 abstract 타입으로 수정하자.
switch (type) {
case type1 :
return 1;
case type2 :
return 2;
}
위와 같이 되어진 구문의 경우 상황에 따라 다를 수 있지만 다형성을 이용하면 좋을 것 같다. 디자인 패턴에서 Strategy 패턴 처럼..
추상 클래스
abstract class type {
abstract int result();
}
구현 클래스
class type1 extends type {
int result () {
return 1;
}
}
class type2 extends type {
int result () {
return 2;
}
}
이와 같이 클래스로 구현하여 swith 혹은 if문을 없애고 또 보기 쉬워져서 유지 보수하기에도 좋다.
'Development > Programming' 카테고리의 다른 글
[Refactoring] 메소드명 변경 (0) | 2013.09.09 |
---|---|
[Refactoring] Null 검사를 Null 객체에 위임 하자 (0) | 2013.09.04 |
[Refactoring] 여러 겹의 조건문을 감시절로 전환 (0) | 2013.09.03 |
[Refactoring] 제어 플래그 제거 (0) | 2013.09.03 |
[Refactoring] 조건문의 공통 실행 코드 빼내기 (0) | 2013.08.30 |