นี่คือสองเซ็นต์ของฉัน (นอกเหนือจากจุดที่ยอดเยี่ยมยกแล้ว):
IMHO มันลงมาจากความจริงที่ว่าโปรแกรมเมอร์ส่วนใหญ่ไม่ได้รับมรดกจริง ๆ และจบลงด้วยการหักโหมส่วนหนึ่งเป็นผลมาจากวิธีการสอนแนวคิดนี้ แนวคิดนี้มีอยู่เป็นวิธีที่จะพยายามห้ามปรามพวกเขาจากการทำจนเกินไปแทนที่จะมุ่งเน้นไปที่การสอนพวกเขาถึงวิธีการที่ถูกต้อง
ทุกคนที่ใช้เวลาในการสอนหรือให้คำปรึกษารู้ว่านี่คือสิ่งที่มักจะเกิดขึ้นโดยเฉพาะกับนักพัฒนาใหม่ที่มีประสบการณ์ในกระบวนทัศน์อื่น ๆ :
ผู้พัฒนาเหล่านี้เริ่มรู้สึกว่าการสืบทอดเป็นแนวคิดที่น่ากลัวนี้ ดังนั้นพวกเขาจึงจบลงด้วยการสร้างประเภทที่มีการซ้อนทับอินเทอร์เฟซ (เช่นพฤติกรรมที่ระบุเหมือนกันโดยไม่ต้องพิมพ์ย่อยทั่วไป) และกับกลมสำหรับการใช้งานส่วนการทำงานทั่วไป
จากนั้น (บ่อยครั้งเป็นผลมาจากการสอนแบบมึนเมา) พวกเขาเรียนรู้เกี่ยวกับประโยชน์ของการสืบทอด แต่มักจะสอนว่าเป็นวิธีการแก้ปัญหาทั้งหมดที่จับได้เพื่อนำมาใช้ซ้ำ พวกเขาจบลงด้วยการรับรู้ว่าพฤติกรรมที่ใช้ร่วมกันใด ๆ จะต้องใช้ร่วมกันผ่านการสืบทอด นี่เป็นเพราะการโฟกัสมักจะเกี่ยวกับการสืบทอดการใช้งานมากกว่าการพิมพ์ย่อย
ใน 80% ของกรณีที่ดีพอ แต่อีก 20% เป็นจุดเริ่มต้นของปัญหา เพื่อหลีกเลี่ยงการเขียนซ้ำและเพื่อให้แน่ใจว่าพวกเขาได้รับประโยชน์จากการใช้งานร่วมกันพวกเขาเริ่มออกแบบลำดับชั้นของพวกเขารอบการใช้งานที่ตั้งใจไว้แทนที่จะเป็นนามธรรม "สแต็กสืบทอดจากรายการที่ลิงก์ซ้ำกัน" เป็นตัวอย่างที่ดีของสิ่งนี้
ครูส่วนใหญ่ไม่ยืนยันในการแนะนำแนวคิดของส่วนต่อประสาน ณ จุดนี้เพราะมันเป็นอีกแนวคิดหนึ่งหรือเพราะ (ใน C ++) คุณต้องปลอมพวกเขาโดยใช้คลาสนามธรรมและมรดกหลายอย่างซึ่งไม่ได้สอนในขั้นตอนนี้ ใน Java ครูจำนวนมากไม่แยกความแตกต่าง "ไม่มีการสืบทอดหลายรายการ" หรือ "การสืบทอดหลายรายการเป็นสิ่งชั่วร้าย" จากความสำคัญของอินเทอร์เฟซ
ทั้งหมดนี้ประกอบไปด้วยความจริงที่ว่าเราได้เรียนรู้มากมายเกี่ยวกับความงามที่ไม่ต้องเขียนโค้ดที่ฟุ่มเฟือยพร้อมการสืบทอดการใช้งานรหัสการมอบหมายจำนวนมากที่ตรงไปตรงมานั้นดูไม่เป็นธรรมชาติ ดังนั้นการแต่งเพลงจึงดูยุ่งเหยิงซึ่งเป็นเหตุผลว่าทำไมเราจึงต้องการกฎนิ้วหัวแม่มือเหล่านี้เพื่อผลักดันโปรแกรมเมอร์ใหม่ ๆ ให้ใช้มันต่อไป (ซึ่งพวกเขาทำมากเกินไปเช่นกัน)