Considera due classi Doged Catentrambe conformi al Animalprotocollo (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 Interactorclasse 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
DogeCatsono 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.