Dans notre application Rails, nous ajoutons des notifications. Certains d'entre eux sont blocking
: Ils arrêtent la progression de la ressource sur laquelle ils sont ajoutés, car certaines informations sur cette ressource sont manquantes.
Les autres notifications sont de simples notifications et ne fournissent que des informations.
Aujourd'hui, j'ai eu une discussion avec un autre programmeur de notre équipe. J'ai créé la structure d'héritage comme ceci:
Cependant, il préfère que j'ajoute simplement blocking
une méthode de retour booléen sur chaque notification et spécifie une liste de sous-classes qui bloquent la classe parent Notification.
La différence entre ces approches n'est pas très grande; dans mon approche, il n'est pas nécessaire de spécifier cette liste, en gardant la classe racine plus propre. D'un autre côté, la logique spéciale qui se produit Notification::Blocking
actuellement n'est pas très grande non plus.
Quel type d'abstraction convient le mieux à ce problème?