ในบทความจำนวนมากทั่วทั้งเว็บคำว่า Inversion of Control และ Dependency Inversion Principle ดูเหมือนจะสับสนและถูกนำมาใช้เป็นคำพ้องความหมาย (ความสับสนเพิ่มเติมถูกบังคับใช้โดยเครื่องมือที่เรียกว่า "ตู้คอนเทนเนอร์ DI" และ "IoC บทความ Wikipediaทำงานได้ดีมากที่พยายามอธิบายว่า IoC นั้นไม่เหมือนกับ DI:
inversion of control (IoC) อธิบายถึงการออกแบบที่ส่วนที่กำหนดเองของโปรแกรมคอมพิวเตอร์ได้รับการไหลของการควบคุมจากไลบรารีทั่วไปที่สามารถใช้ซ้ำได้
ดังนั้น DIP จึงเกี่ยวกับการมีโมดูลของคุณขึ้นอยู่กับ abstractions มากกว่าการใช้งานที่เป็นรูปธรรม
และ IoC กำลังควบคุมการไหลของโปรแกรมของคุณไปยังโมดูลอื่น และสิ่งหนึ่งที่คุณสามารถมีโมดูลนี้คือแก้ไขการพึ่งพาที่รันไทม์
ความแตกต่างนี้ดูยุติธรรม แต่ฉันไม่เคยเห็นใครพูดถึงแอปพลิเคชันอื่น ๆ ของหลักการ IoC นอกเหนือจากการแก้ไขการพึ่งพา คำจำกัดความของ Wikipedia นั้นค่อนข้างกว้างและดูเหมือนว่าคุณสามารถทำได้มากขึ้นด้วยโมดูลที่สามารถโทรเข้ารหัสที่กำหนดเองตามการกำหนดค่าและตรรกะภายในบางอย่าง
ดังนั้นนี่เป็นคำถามที่ฉันยังไม่สามารถเข้าใจได้:
- ความสัมพันธ์ที่แท้จริงระหว่าง IoC และกรมทรัพย์สินทางปัญญาคืออะไร? IoC ทำหน้าที่เป็นเครื่องมือในการดำเนินการของ DIP หรือไม่?
- ทำไมเครื่องมือสำหรับการแก้ปัญหาการพึ่งพาที่เรียกว่าทั้ง DI- และ IoC-container นี่ก็หมายความว่า DI และ IoC เป็นสิ่งเดียวกัน
หมายเหตุ : คำถามนี้ไม่ได้ซ้ำซ้อนกับ DI และ IoC ต่างกันเพราะคำถามหลังถามเกี่ยวกับการฉีดการพึ่งพาไม่ใช่การพึ่งพาการพึ่งพา