ฉันมีฐานสองชั้น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
สาเหตุของการส่งคืนชนิดบูล ชั้นอื่นจะไปกินคอลเลกชันของและคอลเลกชันของTrigger
Operation
มันต้องการที่จะทราบว่าการทำแผนที่ที่มีอยู่ระหว่างและTrigger
Operation
มันจะใช้ข้อมูลนั้นเพื่อสร้างรายงาน