Considera due classi Dog
e Cat
entrambe conformi al protocollo Animal
(in termini di linguaggio di programmazione Swift. Sarebbe un'interfaccia in Java / C #).
Abbiamo uno schermo che mostra una lista mista di cani e gatti. Esiste la classe Interactor
che gestisce la logica dietro le scene.
Ora vogliamo presentare un avviso di conferma all'utente quando vuole eliminare un gatto. Tuttavia, i cani devono essere eliminati immediatamente senza avvisi. Il metodo con i condizionali sarebbe simile a questo:
func tryToDeleteModel(model: Animal) {
if let model = model as? Cat {
tellSceneToShowConfirmationAlert()
} else if let model = model as? Dog {
deleteModel(model: model)
}
}
Come può essere refactato questo codice? Ovviamente ha un odore