Saya telah refactoring sistem yang ada untuk menggunakan injeksi ketergantungan, dan pekerjaan itu telah berjalan dengan lancar.
Setelah beberapa saat saya perhatikan bahwa sejumlah besar perpustakaan in-house menjadi tergantung pada kerangka DI yang saya gunakan. Akibatnya seluruh proyek sekarang tergantung pada kerangka kerja pihak ketiga ini.
Saya melihat sebuah ironi dalam memisahkan semua dependensi dengan membuatnya tergantung pada perpustakaan bersama.
Reaksi pertama saya adalah membuat perpustakaan pembungkus di sekitar kerangka kerja dependensi. Oleh karena itu, saya bisa mengganti kerangka kerja ini jika diperlukan. Setelah memperkirakan pekerjaan yang terlibat, saya menyadari bahwa API yang dihasilkan akan mirip dengan kerangka kerja yang ada, dan karenanya membuatnya lebih sulit untuk menggantinya. Jadi saya meninggalkan ide itu.
Kekhawatiran saya adalah bahwa kerangka kerja DI yang saya gunakan menjadi usang atau perlu diganti.
Apakah ada pola pengembangan saat bekerja dengan DI yang mengurangi sambungan antara proyek dan kerangka kerja DI?
DIFramework.Get<IService>()
sebenarnya bukan injeksi ketergantungan; itu adalah pola terkait yang disebut Pencari Layanan. Banyak orang yang tidak menyukai Service Locator karena ia menyatukan Anda dengan framework dan karena terlalu mudah disalahgunakan (seperti Singleton). Martin Fowler memiliki artikel hebat tentang pola-pola ini: martinfowler.com/articles/injection.html