Nella nostra applicazione Rails, stiamo aggiungendo notifiche. Alcuni di questi sono blocking
: interrompono l'avanzamento di qualsiasi risorsa su cui sono aggiunti, poiché mancano alcune informazioni su tale risorsa.
Altre notifiche sono notifiche semplici e forniscono solo informazioni.
Oggi ho avuto una discussione con un altro programmatore sul nostro team. Ho creato la struttura di ereditarietà come questa:
Tuttavia, preferirebbe che aggiungessi blocking
come metodo di ritorno booleano su ogni notifica e specificasse un elenco di sottoclassi che bloccano la classe genitore di notifica.
La differenza tra questi approcci non è molto ampia; nel mio approccio non è necessario specificare questo elenco, mantenendo pulita la classe radice. D'altra parte, la logica speciale che si verifica in Notification::Blocking
adesso non è neanche molto grande.
Che tipo di astrazione è più adatta a questo problema?