私には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
ます。その情報を使用してレポートを作成します。