PlusMagi's Blog By Pitt Phunsanit Programming Dependency Inversion Principle (DIP)

Dependency Inversion Principle (DIP)

ในโลกของการพัฒนาซอฟต์แวร์เชิงวัตถุ การรักษาความยืดหยุ่นและความสามารถในการบำรุงรักษาโค้ดเป็นสิ่งสำคัญอย่างยิ่ง หลักการ SOLID ซึ่งประกอบด้วยห้าหลักการออกแบบ ได้รับการยอมรับว่าเป็นรากฐานของสถาปัตยกรรมที่แข็งแรง หนึ่งในเสาหลักเหล่านั้นคือ Dependency Inversion Principle หรือ DIP นี่ไม่ใช่เพียงแค่แนวคิดทางทฤษฎี แต่เป็นการปรับเปลี่ยนมุมมองพื้นฐานเกี่ยวกับวิธีการให้โมดูลต่างๆ มีปฏิสัมพันธ์กัน

Dependency Inversion Principle คืออะไร

DIP ระบุว่า ‘Modules ควรขึ้นอยู่กับ Abstractions ไม่ใช่ Concretions’ พูดง่ายๆ ก็คือ โค้ดส่วนบนระดับธุรกิจ (High-level modules) ที่กำหนดตรรกะหลักของระบบไม่ควรไปเรียกใช้หรือพึ่งพารายละเอียดเฉพาะเจาะจงของชั้นข้อมูล (Low-level modules: เช่น Database Connection, File System Reader) โดยตรง หากเราละเลย D.I.P เมื่อเกิดปัญหาใด ๆ ขึ้น เรามักจะพบกับการผูกติดแน่นเกินจำเป็น (Tight Coupling)

กล่าวโดยละเอียดกว่านั้น แทนที่จะให้อิสต์ A เรียกใช้งาน Class B อย่างชัดเจน ทำให้ Module C ต้องรู้ถึงโครงสร้างภายในทั้งหมดของการทำงานร่วมกันนี้ แนวคิดของเราต้องถูก