Considérez deux classes Doget les Catdeux conformes au Animalprotocole (en termes de langage de programmation Swift. Ce serait l'interface en Java / C #).
Nous avons un écran affichant une liste mixte de chiens et de chats. Il y a une Interactorclasse qui gère la logique dans les coulisses.
Maintenant, nous voulons présenter une alerte de confirmation à l'utilisateur lorsqu'il souhaite supprimer un chat. Cependant, les chiens doivent être supprimés immédiatement sans aucune alerte. La méthode avec des conditions ressemblerait à ceci:
func tryToDeleteModel(model: Animal) {
if let model = model as? Cat {
tellSceneToShowConfirmationAlert()
} else if let model = model as? Dog {
deleteModel(model: model)
}
}
Comment refactoriser ce code? Ça sent évidemment
DogetCatsont décrites comme des classes, toutAnimalest un protocole qui est mis en œuvre par chacune de ces classes. Il y a donc un peu de décalage entre la question et votre réponse.