Es geht darum, eine einzige Rolle zu haben .
Jede Klasse sollte mit einem Rollennamen fortgesetzt werden. Eine Rolle ist in der Tat eine (Menge von) Verb (en), die einem Kontext zugeordnet sind.
Beispielsweise :
Datei bietet Zugriff auf eine Datei. FileManager verwaltet Dateiobjekte.
Ressourcenhaltedaten für eine Ressource aus einer Datei. ResourceManager halten und alle Ressourcen bereitstellen.
Hier können Sie sehen, dass einige Verben wie "verwalten" eine Reihe anderer Verben implizieren. Verben allein sind die meiste Zeit besser als Funktionen gedacht als Klassen. Wenn das Verb zu viele Aktionen impliziert, die einen eigenen gemeinsamen Kontext haben, sollte es eine Klasse für sich sein.
Die Idee besteht also nur darin, Ihnen eine einfache Vorstellung davon zu geben, was die Klasse macht, indem Sie eine eindeutige Rolle definieren, die das Zusammenwirken mehrerer Unterrollen sein kann (die von Mitgliedsobjekten oder anderen Objekten ausgeführt werden).
Ich erstelle oft Manager-Klassen, die mehrere andere Klassen enthalten. Wie eine Fabrik, eine Kanzlei usw. Sehen Sie eine Managerklasse wie eine Art Gruppenleiter, einen Orchesterkapitän, der andere Völker dazu anleitet, zusammenzuarbeiten, um eine hochrangige Idee zu erreichen. Er hat eine Rolle, impliziert aber die Arbeit mit anderen einzigartigen Rollen. Sie können es auch so sehen, wie ein Unternehmen organisiert ist: Ein CEO ist nicht produktiv auf der Ebene der reinen Produktivität, aber wenn er nicht da ist, kann nichts richtig zusammenarbeiten. Das ist seine Rolle.
Identifizieren Sie beim Entwerfen eindeutige Rollen. Überprüfen Sie für jede Rolle erneut, ob sie nicht in mehrere andere Rollen unterteilt werden kann. Wenn Sie auf diese Weise die Art und Weise ändern möchten, in der Ihr Manager Objekte erstellt, ändern Sie einfach die Factory, und achten Sie auf Ruhe.