일부 리팩토링이 필요한 응용 프로그램을 상속 받았습니다. 다음은 나에게 두통을주고있다.스위치 케이스가 너무 많은 리펙토링 코드
class Girl {
//...
void traditionalMakeUp() {
switch (type) {
case FRENCH:
frenchMakeUp();
break;
case AFRICAN:
africanMakeUp;
break;
case NORWEGIAN:
norwegianMakeUp();
.....
case KOREAN:
koreanMakeUp();
.....
}
}
}
나는이처럼 리팩토링하는 것을 시도하고있다 : 그것을 할 수있는 올바른 방법
abstract class Girl {
//...
abstract void makeUp();
}
class French extends Girl {
void makeUp() {
// makeUP
}
}
class African extends Girl {
void makeUp() {
// makeUP
}
}
class Norwegian extends Girl {
void makeUp() {
// makeUP
}
}
// Somewhere in client code
girl.makeUp();
가 원래의 소스 코드는 다음과 같은 너무 많은 스위치의 경우이있다? 내 스위치에 20 가지 이상의 사례가 없다면 전략 패턴이 좋을 것입니다.
또한 전략 디자인 패턴에 맞추기 위해 20 개 이상의 클래스를 추가하기를 꺼립니다. 그것을 리펙토링하는 또 다른 좋은 방법이 있습니까?
변종'makeUp()'각각은 무엇을합니까? – Naros
@Naros makeUp()는 국적에 따라 다릅니다. 노르웨이어의 makeUp() 논리는 프랑스어 등의 makeUp() 논리와 완전히 다릅니다 ... –
스위치가 어느정도 고정되어 있거나 성장할 가능성이 있습니까? 'makeUp()'메소드의 평균 코드 라인은 무엇입니까? 'makeUp()'메소드는 다른 클래스들에 의존적인가? 아니면 완전히 독립적 인 코드인가? –