É sobre ter um papel único .
Cada classe deve ser reiniciada com um nome de função. Um papel é de fato um (conjunto de) verbo (s) associado (s) a um contexto.
Por exemplo :
O arquivo fornece o acesso de um arquivo. O FileManager gerencia objetos de arquivo.
Dados de retenção de recurso para um recurso de um Arquivo. O ResourceManager retém e fornece todos os recursos.
Aqui você pode ver que alguns verbos como "gerenciar" implicam um conjunto de outros verbos. Os verbos sozinhos são mais bem pensados como funções do que as classes, na maioria das vezes. Se o verbo implica muitas ações que têm seu próprio contexto comum, deve ser uma classe em si.
Portanto, a idéia é apenas permitir que você tenha uma idéia simples do que a classe define, definindo uma função única, que pode ser o agregado de várias sub-funções (executadas por objetos membros ou outros objetos).
Costumo criar classes Manager que possuem várias outras classes diferentes. Como uma fábrica, um registro, etc. Veja uma classe de gerente como algum tipo de chefe de grupo, um chefe de orquestra que orienta outras pessoas a trabalharem juntas para alcançar uma ideia de alto nível. Ele tem um papel, mas implica trabalhar com outros papéis únicos. Você também pode ver como a empresa está organizada: um CEO não é produtivo no nível de produtividade pura, mas se ele não estiver lá, nada poderá funcionar corretamente juntos. Esse é o papel dele.
Ao projetar, identifique funções exclusivas. E para cada papel, verifique novamente se ele não pode ser cortado em vários outros papéis. Dessa forma, se você precisar simplesmente alterar a maneira como seu gerente cria objetos, basta alterar a Fábrica e ter a mente em paz.