Wenn ich eine Datenbank-Tabelle enthält eine Flagge, die mehrere Zustände annehmen kann, sollte ich tun, um dieseSollte ich Methoden oder konstante Flags verwenden?
if ($Object->isStateOne()) {
// do something
}
else if ($Object->isStateTwo()) {
// do something else
}
else if ($Object->isStateThree()) {
// do yet something else
}
oder dieses
switch ($Object->getSomeFlag()) {
case ObjectMapper::STATE_ONE:
// do something
break;
case ObjectMapper::STATE_TWO:
// do something else
break;
case ObjectMapper::STATE_THREE:
// do yet something else
break;
}
?
Auf Kosten von N mehr Klassen. Und es ist viel schwieriger, zwischen Staaten zu wechseln. Ob das Sinn macht, hängt davon ab, was die Zustände sind. – derobert
Ich glaube nicht, Polymorphismus wird funktionieren, wie dieser if/else/switch-Anweisungsblock in UI-Code gehen muss. Was für jeden Fall passiert, wird nicht überall gleich sein. –