状态处理型重构方法
针对状态处理的代码,一种优雅的做法是用多态取代条件表达式
重构前:
double getSpeed(){
switch(_type){
case EUROPEAN:
return getBaseSpeed();
case AFRICAN:
return getBaseSpeed()-getLoadFactor()*_numberOfCoconuts;
case NORWEGIAN_BLUE:
return (_isNailed)?0:getBaseSpeed(_voltage);
}
}
重构后
class Bird{
abstract double getSpeed();
}
class European extends Bird{
double getSpeed(){
return getBaseSpeed();
}
}
class African extends Bird{
double getSpeed(){
return getBaseSpeed()-getLoadFactor()*_numberOfCoconuts;
}
}
class NorwegianBlue extends Bird{
double getSpeed(){
return (_isNailed)?0:getBaseSpeed(_voltage);
}
}