Saya berencana untuk melakukan pembicaraan tentang Injeksi Ketergantungan dan Kontainer IoC, dan saya sedang mencari beberapa argumen yang baik untuk menggunakannya.
Apa manfaat paling penting dari penggunaan teknik ini, dan alat-alat ini?
design-patterns
dependency-analysis
Andy Lowry
sumber
sumber
Jawaban:
Yang paling penting, bagi saya, membuatnya mudah untuk mengikuti Prinsip Tanggung Jawab Tunggal .
DI / IoC membuatnya mudah bagi saya untuk mengelola dependensi antar objek. Pada gilirannya, itu membuatnya lebih mudah bagi saya untuk memecah fungsionalitas yang koheren ke dalam kontrak sendiri (antarmuka) Akibatnya, kode saya jauh lebih termodulasi sejak saya mengetahui DI / IoC.
Hasil lain dari ini adalah bahwa saya dapat lebih mudah melihat jalan saya ke desain yang mendukung Prinsip Terbuka-Tertutup . Ini adalah salah satu teknik yang paling menginspirasi kepercayaan diri (hanya setelah pengujian otomatis). Saya ragu saya bisa mendukung nilai-nilai dari Prinsip Terbuka-Tertutup.
DI / IoC adalah salah satu dari beberapa hal dalam karier pemrograman saya yang telah menjadi "pengubah permainan". Ada perbedaan besar dalam kualitas antara kode yang saya tulis sebelum & setelah belajar DI / IoC. Biarkan saya menekankan itu lagi. Peningkatan besar dalam kualitas kode.
sumber
Contoh-contoh yang benar-benar membuka mata saya adalah melihat bagaimana hal itu memungkinkan untuk dengan mudah menguji benda yang dibuat sedemikian rupa. Sebelum itu, saya kesulitan mencoba mengisolasi objek untuk unit test. Saya sering menulis tes untuk berinteraksi dengan sistem yang jauh lebih besar. Ini sangat sulit karena sistem secara keseluruhan jauh lebih mudah diprediksi dan lebih rentan untuk berubah daripada komponen individu.
sumber
Keuntungan dari suntikan ketergantungan adalah:
sumber
Saya pikir manfaat sebenarnya lebih politis daripada teknis. DI hanyalah alternatif dari pola Service Locator , tidak lebih. Dengan sendirinya, itu tidak membuatnya lebih mudah untuk mengikuti prinsip-prinsip seperti SRP atau OCP, atau untuk memisahkan lapisan. Responden lain di sini membingungkan konsep dan teknik yang berbeda, IMO.
Anda dapat mencapai tujuan yang sama sehubungan dengan kohesi tinggi dan kopling rendah dengan menggunakan Layanan Locators, atau dengan hanya instantiating dependensi secara langsung kapan saja berlaku (yang sebagian besar waktu).
Sekarang, saya tahu banyak yang akan tidak setuju dengan pendapat ini. Saya akan senang mendiskusikan contoh-contoh nyata.
sumber
Ketika DI digunakan untuk mengekspos objek dalam untuk tujuan pengujian, polanya telah disalahgunakan.
sumber