Si tratta di avere un ruolo unico .
Ogni classe dovrebbe essere ripresa da un nome di ruolo. Un ruolo è in effetti un (set di) verbo (i) associato a un contesto.
Per esempio :
Il file fornisce l'accesso a un file. FileManager gestisce gli oggetti File.
Dati di conservazione delle risorse per una risorsa da un file. ResourceManager conserva e fornisce tutte le risorse.
Qui puoi vedere che alcuni verbi come "gestisci" implicano una serie di altri verbi. I verbi da soli sono pensati meglio come funzioni rispetto alle classi, il più delle volte. Se il verbo implica troppe azioni che hanno il loro contesto comune, allora dovrebbe essere una classe in sé.
Quindi, l'idea è solo quella di farti avere un'idea semplice di cosa fa la classe definendo un ruolo unico, che potrebbe essere il raggruppamento di diversi sotto-ruoli (eseguiti da oggetti membri o altri oggetti).
Costruisco spesso classi Manager che contengono diverse altre classi. Come una fabbrica, un registro, ecc. Vedi una classe Manager come una specie di capo gruppo, un capo orchestra che guida altre persone a lavorare insieme per realizzare un'idea di alto livello. Ha un ruolo, ma implica lavorare con altri ruoli unici all'interno. Puoi anche vederlo come è organizzata un'azienda: un CEO non è produttivo sul puro livello di produttività, ma se non è lì, nulla può funzionare correttamente insieme. Questo è il suo ruolo.
Durante la progettazione, identificare ruoli univoci. E per ogni ruolo, vedi di nuovo se non può essere tagliato in molti altri ruoli. In questo modo, se devi semplicemente cambiare il modo in cui il tuo Manager costruisce oggetti, cambia semplicemente la Fabbrica e pensa con tranquillità.