Tengo base dos clases, Operationy Trigger. Cada uno tiene una serie de subclases que se especializan en ciertos tipos de operaciones o disparadores. A Triggerpuede desencadenar un específico Operation. Mientras que un Operationpuede ser activado por un específico Trigger.
Necesito escribir el código que asigna un dado Operationa 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 Triggery una colección de Operation. Necesita saber dónde existe un mapeo entre a Triggery an Operation. Utilizará esa información para crear un informe.
