Betrachten wir zwei Klassen Dogund Catkonform sowohl zu AnimalProtokoll (in Bezug auf die Swift - Programmiersprache. Diese Schnittstelle in Java / C # würde).
Wir haben einen Bildschirm mit einer gemischten Liste von Hunden und Katzen. Es gibt eine InteractorKlasse, die hinter den Kulissen mit Logik umgeht.
Jetzt möchten wir dem Benutzer eine Bestätigungsbenachrichtigung anzeigen, wenn er eine Katze löschen möchte. Hunde müssen jedoch sofort ohne Benachrichtigung gelöscht werden. Die Methode mit Bedingungen würde folgendermaßen aussehen:
func tryToDeleteModel(model: Animal) {
if let model = model as? Cat {
tellSceneToShowConfirmationAlert()
} else if let model = model as? Dog {
deleteModel(model: model)
}
}
Wie kann dieser Code überarbeitet werden? Es riecht offensichtlich
DogundCatwerden als Klassen beschrieben, währendAnimales sich um ein Protokoll handelt, das von jeder dieser Klassen implementiert wird. Es besteht also ein gewisses Missverhältnis zwischen der Frage und Ihrer Antwort.