En nuestra aplicación Rails, estamos agregando notificaciones. Algunos de estos son blocking
: detienen el progreso de cualquier recurso en el que se agreguen, porque falta información sobre ese recurso.
Otras notificaciones son notificaciones simples y solo proporcionan información.
Hoy tuve una discusión con otro programador de nuestro equipo. He creado la estructura de herencia de esta manera:
Sin embargo, prefiere que solo agregue blocking
como un método de retorno booleano en cada Notificación y especifique una lista de subclases que están bloqueando dentro de la clase principal de Notificación.
La diferencia entre estos enfoques no es muy grande; En mi enfoque, uno no tiene que especificar esta lista, manteniendo limpia la clase raíz. Por otro lado, la lógica especial que ocurre en Notification::Blocking
este momento tampoco es muy grande.
¿Qué tipo de abstracción es más adecuada para este problema?