ขออภัยถ้า "ลำดับชั้นการแต่งเพลง" ไม่ใช่เรื่องอะไร แต่ฉันจะอธิบายสิ่งที่ฉันหมายถึงในคำถาม
ไม่มีโปรแกรมเมอร์ OO ที่ยังไม่ได้พบกับรูปแบบของ "Keep hierarchies flat" หรือ "ชอบเรียงความมากกว่าการสืบทอด" และอื่น ๆ อย่างไรก็ตามลำดับชั้นขององค์ประกอบที่ลึกซึ้งดูเหมือนว่าจะมีปัญหาเช่นกัน
สมมติว่าเราต้องการชุดของรายงานที่มีรายละเอียดผลลัพธ์ของการทดสอบ:
class Model {
// ... interface
Array<Result> m_results;
}
ผลลัพธ์แต่ละรายการมีคุณสมบัติบางอย่าง สิ่งเหล่านี้รวมถึงเวลาของการทดสอบรวมถึงข้อมูลเมตาจากแต่ละขั้นตอนของการทดสอบ:
enum Stage {
Pre = 1,
Post
};
class Result {
// ... interface
Epoch m_epoch;
Map<Stage, ExperimentModules> m_modules;
}
โอเคเยี่ยมเลย ตอนนี้แต่ละโมดูลการทดสอบมีสตริงที่อธิบายผลลัพธ์ของการทดสอบรวมถึงชุดของการอ้างอิงไปยังชุดตัวอย่างการทดลอง:
class ExperimentalModules {
// ... interface
String m_reportText;
Array<Sample> m_entities;
}
แล้วแต่ละตัวอย่างก็มี ... อืมคุณจะได้ภาพ
ปัญหาคือว่าถ้าฉันสร้างแบบจำลองวัตถุจากโดเมนแอปพลิเคชันของฉันดูเหมือนว่าจะเป็นแบบธรรมชาติมาก แต่ในตอนท้ายของวัน a Result
เป็นเพียงข้อมูลที่โง่เง่า! ดูเหมือนจะไม่คุ้มค่าที่จะสร้างชั้นเรียนขนาดใหญ่สำหรับมัน
สมมติว่าโครงสร้างข้อมูลและคลาสที่แสดงด้านบนเป็นแบบอย่างความสัมพันธ์ในโดเมนแอปพลิเคชันอย่างถูกต้องมีวิธีที่ดีกว่าในการสร้างแบบจำลอง "ผลลัพธ์" โดยไม่หันไปใช้ลำดับชั้นการจัดองค์ประกอบแบบลึกหรือไม่ มีบริบทภายนอกใดบ้างที่จะช่วยคุณพิจารณาว่าการออกแบบดังกล่าวดีหรือไม่?