ขออภัยถ้า "ลำดับชั้นการแต่งเพลง" ไม่ใช่เรื่องอะไร แต่ฉันจะอธิบายสิ่งที่ฉันหมายถึงในคำถาม
ไม่มีโปรแกรมเมอร์ 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เป็นเพียงข้อมูลที่โง่เง่า! ดูเหมือนจะไม่คุ้มค่าที่จะสร้างชั้นเรียนขนาดใหญ่สำหรับมัน
สมมติว่าโครงสร้างข้อมูลและคลาสที่แสดงด้านบนเป็นแบบอย่างความสัมพันธ์ในโดเมนแอปพลิเคชันอย่างถูกต้องมีวิธีที่ดีกว่าในการสร้างแบบจำลอง "ผลลัพธ์" โดยไม่หันไปใช้ลำดับชั้นการจัดองค์ประกอบแบบลึกหรือไม่ มีบริบทภายนอกใดบ้างที่จะช่วยคุณพิจารณาว่าการออกแบบดังกล่าวดีหรือไม่?