我已經繼承了一個需要重構的應用程序。以下是給我一些頭痛的問題。原來的源代碼有太多的開關情況如下所示:帶有太多開關的重構代碼
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()'方法還是完全獨立的代碼? –