Questa è la mia situazione:
I modelli possono contenere proprietà che possono essere i modelli stessi. Ogni proprietà può avere un comportamento personalizzato, questo comportamento deve essere selezionato attraverso il suo nome (ad esempio: Versionable, Authorizable o qualcos'altro). Gli sviluppatori devono avere la possibilità di aggiungere i propri comportamenti all'elenco con i comportamenti disponibili.
Ogni comportamento è implementato in una classe, ma qui è il trucco: un modello può implementare zero o più comportamenti. Come essere sicuri che i comportamenti vengano eseguiti nel modo giusto (ad es. Sequenza) senza interrompere le cose da altri comportamenti.
Per prima cosa suggerirei che ci sarebbe un elenco di comportamenti supportati, ma dal momento che un programmatore non sa con certezza quali altri comportamenti sono possibili, questa non sembra essere una buona opzione.