ฉันเจอคำว่า "การเขียนโปรแกรมไปยังอินเทอร์เฟซแทนที่จะใช้งาน" มากและฉันคิดว่าฉันเข้าใจความหมายของมัน แต่ฉันต้องการให้แน่ใจว่าฉันเข้าใจถึงประโยชน์และการใช้งานที่เป็นไปได้
"การเขียนโปรแกรมไปยังอินเทอร์เฟซ" หมายความว่าเมื่อเป็นไปได้เราควรอ้างถึงระดับนามธรรมของคลาส (อินเทอร์เฟซคลาสนามธรรมหรือบางครั้งเป็นซูเปอร์คลาสของการเรียงลำดับบางอย่าง) แทนที่จะอ้างถึงการใช้งานที่เป็นรูปธรรม
ตัวอย่างทั่วไปใน Java คือการใช้:
List myList = new ArrayList();
ArrayList myList = new ArrayList();
แทน
ฉันมีคำถามสองข้อเกี่ยวกับเรื่องนี้:
ฉันต้องการให้แน่ใจว่าฉันเข้าใจถึงประโยชน์หลักของวิธีนี้ ฉันคิดว่าประโยชน์ส่วนใหญ่มีความยืดหยุ่น การประกาศวัตถุเป็นข้อมูลอ้างอิงระดับสูงมากกว่าการนำไปปฏิบัติอย่างเป็นรูปธรรมช่วยให้มีความยืดหยุ่นและบำรุงรักษาได้มากขึ้นตลอดวงจรการพัฒนาและตลอดทั้งรหัส ถูกต้องหรือไม่ ความยืดหยุ่นเป็นประโยชน์หลักหรือไม่?
มีวิธีเพิ่มเติมในการ 'เขียนโปรแกรมไปยังส่วนต่อประสาน' หรือไม่? หรือ "การประกาศตัวแปรเป็นอินเตอร์เฟสแทนที่จะใช้อย่างเป็นรูปธรรม" เป็นการนำแนวคิดนี้ไปปฏิบัติเท่านั้น
ฉันไม่ได้พูดคุยเกี่ยวกับการเชื่อมต่อสร้าง Java ฉันกำลังพูดถึงหลักการ OO "การเขียนโปรแกรมไปยังส่วนต่อประสานไม่ใช่การใช้งาน" ในหลักการนี้"อินเตอร์เฟซ" ของโลกหมายถึง "supertype" ใด ๆ ของคลาส - อินเทอร์เฟซคลาสนามธรรมหรือซูเปอร์คลาสธรรมดาซึ่งเป็นนามธรรมและคอนกรีตน้อยกว่าคลาสย่อยที่เป็นรูปธรรมมากขึ้น