Dalam banyak artikel di seluruh web, istilah Inversi Kontrol dan Ketergantungan Prinsip Inversi tampaknya digabungkan dan digunakan sebagai sinonim (kebingungan lebih lanjut ditegakkan oleh alat yang disebut "DI-Containers" dan "IoC-Containers"). Artikel Wikipedia melakukan pekerjaan yang bagus untuk menjelaskan bahwa IoC tidak sama dengan DI:
inversion of control (IoC) menjelaskan desain di mana bagian-bagian program komputer yang ditulis khusus menerima aliran kontrol dari pustaka generik yang dapat digunakan kembali
Jadi DIP adalah tentang memiliki modul Anda bergantung pada abstraksi daripada implementasi konkret.
Dan IoC adalah tentang memberikan kontrol atas aliran program Anda ke modul terpisah. Dan salah satu hal yang dapat Anda lakukan dengan modul ini adalah menyelesaikan dependensi saat runtime.
Perbedaan ini memang tampak adil, tetapi saya belum pernah melihat orang yang menyebutkan aplikasi lain dari prinsip IoC selain penyelesaian ketergantungan. Definisi Wikipedia cukup luas, dan sepertinya Anda dapat melakukan lebih banyak hal dengan modul yang dapat membuat panggilan ke kode kustom Anda berdasarkan konfigurasi dan beberapa logika internal.
Jadi, inilah beberapa pertanyaan yang belum bisa saya pahami:
- Apa hubungan aktual antara IoC dan DIP? Apakah IoC selalu berfungsi sebagai sarana untuk mengimplementasikan DIP?
- Mengapa alat untuk penyelesaian ketergantungan disebut kontainer DI- dan IoC? Ini menyiratkan bahwa DI dan IoC adalah hal yang sama.
Catatan : Pertanyaan ini bukan duplikat dari Apa perbedaan antara DI dan IoC , karena yang terakhir menanyakan tentang Dependency Injection, bukan Dependency Inversion.