คำถามคือการอธิบายตัวเองค่อนข้างสวย: การสืบทอดหลายอย่างไม่สามารถแก้ปัญหาทั้งหมดที่ระบบนิติบุคคลแก้ได้หรือไม่
ฉันจำคำศัพท์ที่เรียกว่า "การสืบทอดหลายอย่าง" และดูเหมือนจะแก้ปัญหาท้องอืดได้มากมายที่การสืบทอดแบบดั้งเดิมกำหนดขึ้น
คำถามคือการอธิบายตัวเองค่อนข้างสวย: การสืบทอดหลายอย่างไม่สามารถแก้ปัญหาทั้งหมดที่ระบบนิติบุคคลแก้ได้หรือไม่
ฉันจำคำศัพท์ที่เรียกว่า "การสืบทอดหลายอย่าง" และดูเหมือนจะแก้ปัญหาท้องอืดได้มากมายที่การสืบทอดแบบดั้งเดิมกำหนดขึ้น
คำตอบ:
ไม่การสืบทอดหลายรายการไม่สามารถแก้ปัญหาเดียวกันทั้งหมดที่ระบบเอนทิตีทำ: ระบบเอนทิตีและการสืบทอดหลายรายการเป็นสองสิ่งที่แตกต่างกันมาก คุณสามารถสร้างระบบเอนทิตีที่มีหรือไม่มีการสืบทอดหลาย ๆ อันและในทำนองเดียวกันคุณสามารถใช้การสืบทอดหลาย ๆ อันได้โดยไม่ต้องสร้างระบบเอนทิตี
ตามเนื้อผ้าระบบนิติบุคคลส่วนประกอบที่มุ่งเน้นที่มีการพัฒนาเพราะความปรารถนาที่จะย้ายออกจากมรดกหนักในรูปแบบใดเล็งแทนองค์ประกอบ มีวรรณคดีและการสนทนาที่เพียงพอที่อื่น ๆ ในสุภาษิตนี้ตัวอย่างเช่นในโปรแกรมเมอร์ SEหรือดังนั้นตัวเองและมันก็เป็นคำถามที่ใหญ่กว่าว่าทำไมถึงชอบการแต่งเพลงเป็นประเภทนอกหัวข้อสำหรับการพัฒนาเกม อย่างไรก็ตามในระยะสั้นมันเป็นวิธีการที่มีแนวโน้มที่จะปล่อยกู้เพื่อปรับปรุงความไม่แน่นอนและการบำรุงรักษา
คำตอบของ Josh นั้นยอดเยี่ยม แต่ฉันต้องการเพิ่ม:
หนึ่งในคุณสมบัติที่ยอดเยี่ยมที่สุดของ Entity / Component คือวิธีการขับเคลื่อนข้อมูลซึ่งทุกสิ่งในเกมของคุณถูกสร้างและจัดการ จากสิ่งที่ฉันเห็นเมื่อคุณมีไลบรารีที่ดีของประเภทส่วนประกอบและระบบที่สร้างขึ้นคุณสามารถสร้างอะไรก็ได้ด้วยการแก้ไขโค้ดน้อยที่สุด (หมายเหตุ: น้อยที่สุด! = 0 )
โดยการกำหนดเกมของคุณในแง่ของพฤติกรรมและให้ความสามารถในการปรับเปลี่ยนพฤติกรรมเหล่านั้นได้ทันทีที่รันไทม์ในระหว่างการเริ่มต้นด้วยการโหลดเกมจากสคริปต์หรือฐานข้อมูลเป็นต้น - คุณเปิดโลกทั้งโลกของความเป็นไปได้ใหม่ ๆ ต้องการดูว่าทำไมเงาของคุณถึงไม่ถึงจุดที่คุณคาดหวัง? เพิ่มองค์ประกอบกล้อง / POV ให้กับแสงของคุณ
เอนทิตี / องค์ประกอบช่วยให้คุณสร้างสิ่งที่คุณต้องการตราบใดที่คุณได้สร้างบล็อก
นอกจากนี้การสืบทอดหลายรายการทำให้เกิดปัญหาเช่นเดียวกับการสืบทอดเดี่ยว เมื่อคุณเพิ่มคุณสมบัติหรือลักษณะการทำงานในลำดับชั้นมันจะแพร่กระจาย ตราบใดที่คุณมีลำดับชั้นลึกคุณจะพบกับสถานการณ์ที่คุณต้องแบกน้ำหนักที่ไม่จำเป็นทำซ้ำรหัสหรือแก้ไขข้อขัดแย้ง ส่วนใหญ่สามารถหลีกเลี่ยงได้เมื่อคุณจินตนาการว่าเกมของคุณเป็นข้อมูล
ฉันเพิ่งเริ่มเล่นกับสิ่งนี้ในช่วงไม่กี่สัปดาห์ที่ผ่านมา แต่ฉันก็ประทับใจกับสิ่งที่เรียบง่าย ไม่ใช่กระสุนเงิน - ฉันได้พบกับหลายกรณีที่การติดแลมบ์ดากับส่วนประกอบนั้นเป็นวิธีที่สะอาดและสะดวกที่สุดในการแก้ปัญหา แต่มันเป็นรูปแบบที่ดีมากถ้าคุณเรียกมันว่า
ในหมายเหตุที่เกี่ยวข้องเล็กน้อย: หนึ่งในเครื่องกำเนิดการบำรุงรักษาขนาดใหญ่ที่น่าเบื่อในแอปพลิเคชันที่เน้นข้อมูลเป็นศูนย์กลาง (เว็บไซต์และอื่น ๆ ) คือการทำแผนที่วัตถุลำดับชั้นในฐานข้อมูลเชิงสัมพันธ์ เรามีวิธีแก้ไขปัญหาที่ดีมากมาย แต่ในที่สุดพวกเขาทั้งหมดก็ถูกแฮ็คที่ออกแบบมาเพื่อทำให้ลำดับชั้นเรียบ แทนที่จะสร้างแบบจำลองของคุณเพื่อที่จะให้บริการตามวัตถุประสงค์ของแอปพลิเคชันคุณละทิ้งการประนีประนอมระหว่างลำดับชั้นที่มีประสิทธิภาพและการเป็นตัวแทนเชิงสัมพันธ์เชิงตรรกะ ฉันเล่นกับความคิดในการสร้างลำดับชั้นที่ค่อนข้างใหญ่ในหนึ่งในแอพของฉันในฐานะระบบ / ส่วนประกอบ - กำหนดลำดับชั้นและทำให้ฐานข้อมูลเป็น Gold Standard สำหรับการดำเนินการที่เหลือ - และเป็นสัญญา
เมื่อคุณรวมความสามารถต่างๆเช่นการสร้างรหัสแบบไดนามิก / การแคชรหัสที่สามารถแก้ไขปัญหาประสิทธิภาพการทำงานได้คุณจะพบกับสถาปัตยกรรมเชิงตรรกะที่รวดเร็วยืดหยุ่นได้ซึ่งอาจทำให้เป้าหมายโค้ดที่ใช้ซ้ำได้ของ OOP ในทางที่ดีขึ้น