เพื่อนร่วมงานของฉันเกิดขึ้นกับกฎง่ายๆสำหรับการเลือกระหว่างการสร้างชั้นฐานหรืออินเตอร์เฟซ
เขาพูดว่า:
ลองนึกภาพทุกวิธีการใหม่ที่คุณกำลังจะใช้ สำหรับแต่ละของพวกเขาพิจารณานี้จะใช้วิธีการนี้จะดำเนินการโดยระดับมากกว่าหนึ่งในว่ารูปแบบนี้โดยไม่ต้องใด ๆการเปลี่ยนแปลง? หากคำตอบคือ "ใช่" ให้สร้างคลาสพื้นฐาน ในทุกสถานการณ์ให้สร้างอินเทอร์เฟซ
ตัวอย่างเช่น:
พิจารณาการเรียน
cat
และdog
ซึ่งขยายชั้นเรียนและมีวิธีการเดียวmammal
pet()
จากนั้นเราจะเพิ่มชั้นเรียนซึ่งไม่ขยายอะไรและมีวิธีการเดียวalligator
slither()
ตอนนี้เราต้องการเพิ่ม
eat()
วิธีการทั้งหมดของพวกเขาหากการดำเนินการตาม
eat()
วิธีการที่จะตรงเดียวกันcat
,dog
และalligator
เราควรสร้างชั้นฐาน (สมมุติว่าanimal
) ซึ่งใช้วิธีการนี้อย่างไรก็ตามหากการติดตั้งใช้งาน
alligator
แตกต่างกันเล็กน้อยเราควรสร้างIEat
ส่วนต่อประสานและสร้างmammal
และalligator
นำไปใช้งาน
เขายืนยันว่าวิธีนี้ครอบคลุมทุกกรณี แต่ดูเหมือนว่าฉันจะทำให้เข้าใจง่ายเกินไป
การทำตามกฎของหัวแม่มือนี้มีค่าหรือไม่
is a
และอินเตอร์เฟซหรือacts like
is
ดังนั้นis a
สัตว์เลี้ยงลูกด้วยนมและสุนัขacts like
กิน นี่จะบอกเราว่าสัตว์เลี้ยงลูกด้วยนมควรเป็นคลาสและผู้กินควรเป็นส่วนต่อประสาน มันเป็นคำแนะนำที่เป็นประโยชน์เสมอ Sidenote: ตัวอย่างของการis
จะเป็นหรือThe cake is eatable
The book is writable
alligator
แน่นอนว่าการติดตั้งใช้งานeat
แตกต่างกันตามที่ยอมรับcat
และdog
เป็นพารามิเตอร์