Considérez deux classes Dog
et les Cat
deux conformes au Animal
protocole (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 Interactor
classe 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
Dog
etCat
sont décrites comme des classes, toutAnimal
est 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.