Para cada entidade, adicionar mais uma camada: Rules. Este fica responsável por verificar e se assegurar que uma série de regras sejam seguidas durante a alteração de uma entidade.
Exemplo: ModuloRL.
Modulo teria uma instância de ModuloRL.
Um delete(mod) chamaria rules.canDelete(mod) e esse diz se ele pode ou não.
delete(mod)
chamariarules.canDelete(mod)
e esse diz se ele pode ou não.