Si tratta di avere un unico ruolo .
Ogni classe dovrebbe essere ripresa da un nome di ruolo.
Un ruolo è in effetti un verbo (set di) associato a un contesto.
Ad 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 meglio pensati come funzioni delle 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 di farti un'idea semplice di cosa fa la classe definendo un ruolo univoco, che potrebbe essere l'aggregato di diversi sottoprocessi (eseguiti da oggetti membro o altri oggetti).
Spesso creo classi Manager che hanno diverse altre classi in esso. Come una fabbrica, un registro, ecc.
Vedi una classe Manager come una specie di capo gruppo, un capo d'orchestra che guida gli altri popoli a lavorare insieme per raggiungere un'idea di alto livello. Ha un ruolo, ma implica lavorare con altri ruoli unici all'interno.
Puoi anche vederlo come è organizzata un'organizzazione: un CEO non è produttivo sul puro livello di produttività, ma se non c'è, allora niente può funzionare correttamente insieme. Questo è il suo ruolo.
Quando progetti, identifica ruoli unici. E per ogni ruolo, vedi di nuovo se non può essere tagliato in molti altri ruoli. In questo modo, se hai bisogno di cambiare il modo in cui il tuo Manager costruisce gli oggetti, cambia semplicemente la Fabbrica e vai con la tranquillità in mente.