"สวัสดี Amigo! ในที่สุดเราก็มาถึงสิ่งที่น่าสนใจจริงๆ วันนี้ฉันจะบอกคุณเกี่ยวกับการสืบทอดหลายรายการการสืบทอดหลายรายการเป็นเครื่องมือที่น่าสนใจและทรงพลังจริงๆ และถ้าไม่ใช่เพราะปัญหาหลายอย่าง Java จะสนับสนุนการสืบทอดหลายคลาส แต่ไม่รองรับ ดังนั้นเราต้องพอใจกับการสืบทอดอินเทอร์เฟซหลายรายการซึ่งถือว่ายอดเยี่ยมทีเดียว"

ลองนึกภาพคุณกำลังเขียนเกมคอมพิวเตอร์ และตัวละครของมัน (วัตถุของคุณ) ต้องมีพฤติกรรมที่ซับซ้อนมาก: เดินไปรอบ ๆ แผนที่, รวบรวมรายการ, ทำภารกิจ, สื่อสารกับตัวละครอื่น, ฆ่าใครบางคน, ช่วยคนอื่น สมมติว่าคุณสามารถแบ่งวัตถุทั้งหมดออกเป็น 20 หมวดหมู่ ซึ่งหมายความว่า หากคุณโชคดี คุณจะสามารถผ่านคลาสเพียง 20 คลาสเพื่อกำหนดวัตถุของคุณ แต่นี่คือสิ่งที่จับได้: วัตถุเหล่านี้จะมีรูปแบบการโต้ตอบที่ไม่เหมือนใครกี่รูปแบบ วัตถุแต่ละประเภทสามารถมีปฏิสัมพันธ์ที่ไม่ซ้ำกันกับวัตถุประเภทอื่นๆ อีก 20 ประเภท (เรากำลังนับการโต้ตอบกับวัตถุประเภทเดียวกันด้วย) กล่าวอีกนัยหนึ่ง คุณจะต้องเขียนโค้ดสำหรับ 20 x 20 = 400 การโต้ตอบ! และถ้าจำนวนของประเภทวัตถุที่ไม่ซ้ำนั้นไม่ใช่ 20 แต่เป็น 100 จำนวนการโต้ตอบก็อาจเท่ากับ 10,000!
"ว้าว! ตอนนี้ฉันเข้าใจแล้วว่าทำไมการเขียนโปรแกรมถึงเป็นงานที่ยากเช่นนี้"
"มันง่ายมาก ต้องขอบคุณสิ่งที่เป็นนามธรรมมากมาย และต้องขอบคุณไม่น้อยเลยสำหรับการสืบทอดอินเทอร์เฟซที่หลากหลาย"
เรามักจะลดความซับซ้อนของการโต้ตอบของวัตถุได้หากบทบาทและ/หรือความสามารถมีปฏิสัมพันธ์กันแทนที่จะเป็นวัตถุเอง และอย่างที่เราทราบกันดีอยู่แล้วว่าความสามารถนั้นสามารถเพิ่มเข้าไปในคลาสได้อย่างง่ายดายเมื่อมันใช้อินเทอร์เฟซบางอย่าง
เมื่อเขียนโปรแกรมขนาดใหญ่ นักพัฒนามักจะทำสิ่งนี้ตั้งแต่เริ่มต้น:
1)ระบุความสามารถ/บทบาททั้งหมด
2)กำหนดปฏิสัมพันธ์ระหว่างบทบาทเหล่านี้
3)จากนั้นเพียงกำหนดบทบาทให้กับทุกชั้นเรียน
“ยกตัวอย่างได้ไหม”
"แน่นอน มาดูบทบาทในการ์ตูนเรื่อง "Tom and Jerry" กัน"
รหัสจาวา | คำอธิบาย |
---|---|
|
— บทบาท/ความสามารถในการเคลื่อนไหว |
|
— บทบาท/ความสามารถในการรับประทาน |
|
— บทบาท/ความสามารถในการกินคน |
|
ทอมเป็นแมวที่มีสามบทบาท: 1) เขาสามารถเคลื่อนไหวได้ 2) เขาสามารถกินคนได้ 3) เขาสามารถถูกคนกินได้ (สุนัข) |
|
เจอร์รี่เป็นหนูที่มีสองบทบาท: 1) เขาสามารถเคลื่อนไหวได้ 2) เขาสามารถถูกใครกินได้ |
|
Killer เป็นสุนัขที่มีสองบทบาท: 1) เขาสามารถเคลื่อนไหวได้ 2) เขาสามารถกินคนได้ |
รู้เพียงสามบทบาทนี้ (ส่วนต่อประสาน) คุณสามารถเขียนโปรแกรมและอธิบายการโต้ตอบที่ถูกต้องระหว่างบทบาทเหล่านี้ ตัวอย่างเช่น วัตถุจะไล่ล่า (ผ่านอินเทอร์เฟซที่เคลื่อนย้ายได้) ตามหลัง «คนที่คุณกินได้» และวิ่งหนีจาก «คนที่กินคุณได้» และทั้งหมดนี้โดยไม่ทราบเกี่ยวกับวัตถุเฉพาะ หากคุณเพิ่มออบเจกต์ (คลาส) ลงในโปรแกรมและรักษาบทบาทเหล่านี้ไว้ โปรแกรมจะยังคงทำงานได้อย่างสวยงาม โดยควบคุมพฤติกรรมของออบเจ็กต์ของคุณ
GO TO FULL VERSION