Suunnittele koodin refaktorointi tilanteelle,
jossa halutaan muuntaa tyyppiriippuva ehdollinen rakenne
olioperustaiseksi, yli/aliluokitusta ja monimuotoisuutta hyödyntäväksi.
Esimerkki tyyppiriippuvasta koodista:
class Car {
...
double getSpeed() {
switch (model) {
case EUROPEAN: return getBaseSpeed();
case AMERICAN: return getBaseSpeed() / 1.6;
case AFRICAN : return getBaseSpeed() - getLoadFactor();
}
}
}