Opis
Wykonujemy tą metodę, gdy mamy warunek logiczny, który wybiera inne zachowania, zależne od danego typu obiektu.
Implementujemy podaną operację po przez przeniesienie każdej opcji z warunku logicznego, aby nadpisywał on metodę w podklasie. Oraz oryginalna klasa robi się abstrakcyja.
Przykład
Przed refkatoryzacją:
double getSpeed() {
switch (_type) {
case EUROPEAN:
return getBaseSpeed();
case AFRICAN:
return getBaseSpeed() - getLoadFactor() * _numberOfCoconuts;
case NORWEGIAN_BLUE:
return (_isNailed) ? 0 : getBaseSpeed(_voltage);
}
throw new RuntimeException ("Should be unreachable");
}
Po refkatoryzacji:
Listing
Ranga: Administrator serwisu Punktów: 0