私には2つの基本クラスがOperationありTriggerます。それぞれに、特定のタイプの操作またはトリガーに特化したいくつかのサブクラスがあります。Aは、Trigger特定のトリガすることができますOperation。一方、Operation特定のによってトリガーできますTrigger。
特定のものOperationを特定のものにTrigger(またはその逆に)マップするコードを記述する必要がありますが、どこに配置するかわかりません。
この場合、コードは1つのクラスまたは他のクラスに明確に属していません。したがって、単一責任の原則に関しては、コードがどこに属すべきかわかりません。
私はすべてうまくいく3つのオプションを見ることができます。1と2は単なるセマンティクスの選択であるように見えますが、3は完全に異なるアプローチを表しています。
- トリガー時、例えば
bool Triggers(Operation o)。 - 操作について、例えば
bool TriggeredBy(Trigger t)。 - マッピングを管理するまったく新しいクラス、たとえば
bool MappingExists(Trigger t, Operation o)。
単一の責任の原則に関して、共有マッピングコードを配置する場所をどのように決定すればよいですか?
責任が共有されているときに単一の責任を管理するにはどうすればよいですか?
編集1。
したがって、実際のコードは次のようになります。すべてのプロパティは、どちらかであるstring、Guid、collection<string>、またはenum。それらは基本的に小さなデータの一部を表すだけです。
編集2。
ブール型の戻り値の理由。別のクラスがのコレクションTriggerとのコレクションを使用しOperationます。との間のマッピングがどこにあるかを知る必要がTriggerありOperationます。その情報を使用してレポートを作成します。
