Saya punya dua kelas dasar, Operation
dan Trigger
. Masing-masing memiliki sejumlah subclass yang berspesialisasi dalam jenis operasi atau pemicu tertentu. A Trigger
dapat memicu spesifik Operation
. Sementara Operation
dapat dipicu oleh spesifik Trigger
.
Saya perlu menulis kode yang memetakan diberikan Operation
ke yang diberikan Trigger
(atau sebaliknya), tapi saya tidak yakin di mana harus meletakkannya.
Dalam hal ini kode tidak jelas milik satu kelas atau kelas lain. Jadi dalam hal prinsip tanggung jawab tunggal, saya tidak yakin di mana kode itu seharusnya berada.
Saya dapat melihat tiga opsi yang semuanya akan berfungsi. Sementara 1 & 2 tampaknya hanya menjadi pilihan semantik, 3 mewakili pendekatan yang sama sekali berbeda.
- Pada pemicunya, misalnya
bool Triggers(Operation o)
. - Pada operasi, mis
bool TriggeredBy(Trigger t)
. - Di kelas yang sama sekali baru yang mengelola pemetaan, misalnya
bool MappingExists(Trigger t, Operation o)
.
Bagaimana saya harus memutuskan di mana menempatkan kode pemetaan bersama sehubungan dengan prinsip tanggung jawab tunggal?
Bagaimana mengelola tanggung jawab tunggal ketika tanggung jawab dibagikan?
Edit 1.
Jadi kode aktualnya terlihat seperti ini. Semua properti, yang baik string
, Guid
, collection<string>
, atau enum
. Mereka pada dasarnya hanya mewakili potongan kecil data.
Edit 2.
Alasan kembalinya tipe bool. Kelas lain akan mengkonsumsi koleksi Trigger
dan koleksi Operation
. Perlu tahu di mana pemetaan ada antara a Trigger
, dan a Operation
. Itu akan menggunakan informasi itu untuk membuat laporan.