Em nosso aplicativo Rails, estamos adicionando notificações. Alguns deles são blocking
: Eles interrompem o progresso de qualquer recurso em que foram adicionados, porque faltam algumas informações sobre esse recurso.
Outras notificações são simples e fornecem apenas informações.
Hoje tive uma discussão com outro programador de nossa equipe. Eu criei a estrutura de herança como esta:
Ele, no entanto, prefere que eu adicione blocking
como método de retorno booleano em cada Notificação e especifique uma lista de subclasses que estão bloqueando dentro da classe pai da Notificação.
A diferença entre essas abordagens não é muito grande; na minha abordagem, não é necessário especificar essa lista, mantendo a classe raiz mais limpa. Por outro lado, a lógica especial que acontece Notification::Blocking
agora também não é muito grande.
Que tipo de abstração é mais adequado para esse problema?