{"text": "### Human: Jelaskan konsep injeksi ketergantungan.. ### Assistant: Dependency injection adalah pola desain yang memungkinkan pemisahan ketergantungan antara komponen perangkat lunak dengan menghapus objek yang dikodekan keras dalam kode dan sebaliknya memperkenalkannya dari luar, umumnya selama runtime. Dengan kata lain, alih-alih memiliki objek yang menciptakan ketergantungan mereka, ketergantungan tersebut dialihkan, atau disuntikkan, ke objek sebagai parameter eksternal, biasanya melalui konstruktor atau metode setter. Hal ini membuat arsitektur aplikasi lebih fleksibel, dapat dipertahankan, dan lebih mudah untuk diuji. Keuntungan utama injeksi ketergantungan adalah bahwa hal itu mengurangi tingkat kopling antara komponen yang berbeda, membuatnya lebih mudah untuk membuat perubahan, menguji atau menukar bagian-bagian individu tanpa mempengaruhi fungsionalitas keseluruhan program. Teknik ini umum digunakan dalam banyak kerangka kerja pemrograman, terutama untuk pengembangan tingkat perusahaan, dan dianggap sebagai prinsip inti dari prinsip kontrol inversi atau IoC."}