Ich habe Basis zwei Klassen, Operation
und Trigger
. Jede hat eine Reihe von Unterklassen, die sich auf bestimmte Arten von Operationen oder Triggern spezialisiert haben. A Trigger
kann eine bestimmte auslösen Operation
. Während ein Operation
von einem bestimmten ausgelöst werden kann Trigger
.
Ich muss den Code schreiben, der eine Vorgabe Operation
einer Vorgabe zuordnet Trigger
(oder umgekehrt), bin mir aber nicht sicher, wo ich sie ablegen soll.
In diesem Fall gehört der Code nicht eindeutig zu der einen oder anderen Klasse. In Bezug auf ein Prinzip der Einzelverantwortung bin ich mir nicht sicher, wo der Code hingehören soll.
Ich kann drei Optionen sehen, die alle funktionieren würden. Während 1 & 2 nur eine Wahl der Semantik zu sein scheinen, repräsentiert 3 einen völlig anderen Ansatz.
- Am Abzug z
bool Triggers(Operation o)
. - Auf die Operation, z
bool TriggeredBy(Trigger t)
. - In einer völlig neuen Klasse, die das Mapping verwaltet, z
bool MappingExists(Trigger t, Operation o)
.
Wie soll ich entscheiden, wo der Code für die gemeinsame Zuordnung in Bezug auf ein Prinzip der Einzelverantwortung platziert werden soll?
Wie kann man eine einzelne Verantwortung verwalten, wenn die Verantwortung geteilt wird?
Bearbeiten 1.
Der eigentliche Code sieht also so aus. Alle Eigenschaften, sind entweder ein string
, Guid
, collection<string>
, oder enum
. Sie stellen im Grunde nur kleine Daten dar.
Bearbeiten 2.
Der Grund für den Rückgabetyp von bool. Eine andere Klasse wird eine Sammlung von Trigger
und eine Sammlung von konsumieren Operation
. Es muss wissen, wo eine Zuordnung zwischen a Trigger
und a besteht Operation
. Diese Informationen werden zum Erstellen eines Berichts verwendet.