У меня есть два базовых класса, Operationи Trigger. У каждого есть несколько подклассов, которые специализируются на определенных типах операций или триггеров. А Triggerможет вызвать конкретный Operation. Хотя Operationможет быть вызвано конкретным Trigger.
Мне нужно написать код, который сопоставляет данное Operationс данным Trigger(или наоборот), но я не уверен, где его поставить.
В этом случае код явно не принадлежит одному классу или другому классу. Таким образом, с точки зрения принципа единственной ответственности, я не уверен, куда должен принадлежать код.
Я вижу три варианта, которые все будут работать. Хотя 1 и 2 кажутся просто выбором семантики, 3 представляет совершенно другой подход.
- На триггере, например
bool Triggers(Operation o). - На операции, например
bool TriggeredBy(Trigger t). - В совершенно новом классе, который управляет отображением, например
bool MappingExists(Trigger t, Operation o).
Как мне решить, где разместить код общего сопоставления в соответствии с принципом единой ответственности?
Как управлять единой ответственностью, когда ответственность разделена?
Редактировать 1.
Таким образом, фактический код выглядит следующим образом. Все свойства, являются либо string, Guid, collection<string>или enum. Они в основном представляют собой небольшие фрагменты данных.
Изменить 2.
Причина возврата типа bool. Другой класс будет использовать коллекцию Triggerи коллекцию Operation. Нужно знать, где существует соответствие между a Triggerи a Operation. Он будет использовать эту информацию для создания отчета.
