มันเป็นวิธีปฏิบัติที่เหมาะสมในการขยายชั้นเรียนเพียงเพื่อใช้ฟังก์ชันเดียวซ้ำได้หรือไม่


10

ฉันกำลังพัฒนาตัวกรองบทความสำหรับไซต์เวิร์ดเพรสและฉันได้สร้าง 4 รายการแรกด้วยชั้นเรียนเดียว

สองขั้นตอนสุดท้ายแตกต่างกันในขอบเขตที่จะแบ่งปันฟังก์ชั่นเดียวเท่านั้น (ฟังก์ชั่นสำหรับการผลิตลิงก์สุดท้าย) ในชั้นเรียนของพวกเขา

มันมีเหตุผลไม่ว่าจะในกรณีนี้หรือในกรณีที่มีสมมุติฐานที่คล้ายกันไม่ว่าจะขยายคลาสเดิมเพื่อให้มีฟังก์ชันการทำงานนั้นหรือมีวิธีที่ดีกว่า


ฉันไม่เข้าใจคำถามนี้ คุณหมายถึงอะไรโดยการสร้างสิ่งต่าง ๆ กับชั้นเรียน คลาสเหล่านี้เป็นสิ่งที่สืบทอดมาจากบางสิ่งหรือไม่? คลาสที่ด้านบนสุดของลำดับชั้นจะมีฟังก์ชั่นทั่วไปหรือไม่?
David Thornley

คำตอบ:


19

ไม่มีถ้าทั้งสองเรียนที่แตกต่างกันเพื่อให้พวกเขาเพียงแบ่งปันฟังก์ชันหนึ่งโอกาสที่พวกเขาไม่ได้แทนกัน - และดังนั้นพวกเขาจะทำลายหลักการ Liskov substition

สืบทอดมาจากคลาสฐานถ้ามันเป็นตรรกะที่จะทำ การแบ่งปันรหัสชิ้นเดียวนั้นไม่ค่อยมีเหตุผลสำหรับการสืบทอด :)

ในตัวอย่างนี้ดูเหมือนว่าคุณต้องการใช้ฟังก์ชันนั้นอีกครั้งผ่านการจัดองค์ประกอบแทน ...


3
ชอบองค์ประกอบมากกว่ามรดก! ในกรณีส่วนใหญ่สิ่งนี้จะทำให้ชีวิตคุณง่ายขึ้นในระยะยาว
เทรวิส

องค์ประกอบ FTW!
back2dos

มูลค่า noting คำตอบของฉันเป็นพื้นเดียวกับ @Sardathrion ฉันเพียงแค่เชื่อมโยงกับหลักการที่เกี่ยวข้อง :) ความ
MattDavey

7

หากคำอธิบายคลาสมีคำว่า " และ " อยู่ในนั้นคำอธิบายคลาสควรจะแบ่งออกเป็นสองคลาส (หรือมากกว่า) จากลักษณะของสิ่งต่าง ๆ คุณสามารถทำให้ฟังก์ชันนั้นเป็นสมาชิกของคลาสอื่นที่ถูกอ้างอิงโดยสิ่งที่คุณมีอยู่ในปัจจุบัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.