Sto lavorando a un progetto che richiede diversi utenti nel sistema, tutti con responsabilità che si sovrappongono; abbiamo isolato due possibili modi per affrontare questo problema, ma non siamo sicuri di quale di essi sia il modo più corretto per farlo.
Opzione 1: crea una super classe virtuale per tutte le classi utente da cui ereditare. Questa super-classe avrà un campo booleano per ciascuna delle responsabilità, permettendoci di cambiare a quale delle sottoclassi è responsabile.
- Pro
- Una singola classe per tutte le sottoclassi da cui ereditare, che ci consente di attivare le responsabilità tramite i campi booleani
- Contro:
- È essenzialmente una classe di Dio, il che significa che ha troppe responsabilità
Opzione 2: crea 19 interfacce, ognuna delle quali rappresenta una delle responsabilità disponibili, e quindi ciascuna delle classi utente eredita da questo pool di interfacce per determinarne le responsabilità.
- Pro
- Ci consente di separare le preoccupazioni in diverse interfacce
- Contro
- Saremo al di sopra delle nostre interfacce, rendendo difficile tenere traccia di
Quindi qual è il modo migliore per farlo, o forse c'è un modo migliore?
Per elaborare la mia domanda, includo il grafico sottostante; mostra le relazioni tra le diverse parti del sistema e i diversi utenti.
R significa accesso lettura e RW significa accesso lettura + scrittura .
Come puoi vedere è un po 'un casino di attributi di interlacciamento.