เพื่อนร่วมงานของฉันเกิดขึ้นกับกฎง่ายๆสำหรับการเลือกระหว่างการสร้างชั้นฐานหรืออินเตอร์เฟซ
เขาพูดว่า:
ลองนึกภาพทุกวิธีการใหม่ที่คุณกำลังจะใช้ สำหรับแต่ละของพวกเขาพิจารณานี้จะใช้วิธีการนี้จะดำเนินการโดยระดับมากกว่าหนึ่งในว่ารูปแบบนี้โดยไม่ต้องใด ๆการเปลี่ยนแปลง? หากคำตอบคือ "ใช่" ให้สร้างคลาสพื้นฐาน ในทุกสถานการณ์ให้สร้างอินเทอร์เฟซ
ตัวอย่างเช่น:
พิจารณาการเรียน
catและdogซึ่งขยายชั้นเรียนและมีวิธีการเดียวmammalpet()จากนั้นเราจะเพิ่มชั้นเรียนซึ่งไม่ขยายอะไรและมีวิธีการเดียวalligatorslither()ตอนนี้เราต้องการเพิ่ม
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เป็นพารามิเตอร์