본문 바로가기

Development/Programming

[Refactoring] 조건문을 재정의로 전환

객체 타입에 따라 다른 기능을 실행하는 조건문이 있을 땐 조건문의 각 절을 하위클래스의 재정의 메소드 안으로 옮기고 원본 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문을 없애고 또 보기 쉬워져서 유지 보수하기에도 좋다.