Considera due classi Dog
ed Cat
entrambe conformi al Animal
protocollo (in termini di linguaggio di programmazione Swift. Sarebbe un'interfaccia in Java / C #).
Abbiamo uno schermo che mostra un elenco misto di cani e gatti. C'è una Interactor
classe che gestisce la logica dietro le quinte.
Ora vogliamo presentare un avviso di conferma all'utente quando desidera eliminare un gatto. Tuttavia, i cani devono essere eliminati immediatamente senza alcun avviso. Il metodo con i condizionali sarebbe simile al seguente:
func tryToDeleteModel(model: Animal) {
if let model = model as? Cat {
tellSceneToShowConfirmationAlert()
} else if let model = model as? Dog {
deleteModel(model: model)
}
}
Come può essere refactored questo codice? Ovviamente odora
Dog
eCat
sono descritti come classi, mentreAnimal
è un protocollo che è implementato da ciascuna di quelle classi. Quindi c'è un po 'di discrepanza tra la domanda e la tua risposta.