Betrachten wir zwei Klassen Dog
und Cat
konform sowohl zu Animal
Protokoll (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 Interactor
Klasse, 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
Dog
undCat
werden als Klassen beschrieben, währendAnimal
es 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.