Tengo base dos clases, Operation
y Trigger
. Cada uno tiene una serie de subclases que se especializan en ciertos tipos de operaciones o disparadores. A Trigger
puede desencadenar un específico Operation
. Mientras que un Operation
puede ser activado por un específico Trigger
.
Necesito escribir el código que asigna un dado Operation
a un dado Trigger
(o viceversa), pero no estoy seguro de dónde ponerlo.
En este caso, el código no pertenece claramente a una clase u otra clase. Entonces, en términos de un principio de responsabilidad única, no estoy seguro de dónde debe pertenecer el código.
Puedo ver tres opciones que funcionarían. Mientras que 1 y 2 parecen ser solo una elección de semántica, 3 representa un enfoque completamente diferente.
- En el gatillo, por ejemplo
bool Triggers(Operation o)
. - En la operación, por ejemplo
bool TriggeredBy(Trigger t)
. - En una clase completamente nueva que gestiona la asignación, por ejemplo
bool MappingExists(Trigger t, Operation o)
.
¿Cómo debo decidir dónde colocar el código de mapeo compartido con respecto a un principio de responsabilidad única?
¿Cómo gestionar la responsabilidad individual cuando la responsabilidad se comparte?
Editar 1.
Entonces el código real se ve así. Todas las propiedades, son o bien un string
, Guid
, collection<string>
, o enum
. Básicamente, solo representan pequeños datos.
Editar 2.
La razón del tipo de retorno de bool. Otra clase va a consumir una colección de Trigger
y una colección de Operation
. Necesita saber dónde existe un mapeo entre a Trigger
y an Operation
. Utilizará esa información para crear un informe.