Dependensi Injeksi (DI) adalah pola desain yang membantu membuat modul perangkat lunak lebih dapat diuji, fleksibel, dan dapat dipertahankan.Melibatkan penyediaan modul dengan dependensinya dari luar daripada memilikinya membuat atau menemukannya sendiri. Pendekatan ini menyederhanakan pengujian karena ketergantungan dapat dengan mudah diganti dengan objek mock atau stub selama tes.

Apa itu Injeksi Ketergantungan?

Dependensi Injeksi Dependensi adalah teknik di mana suatu objek menerima dependensinya melalui konstruktor, setter, atau metode antarmuka. Alih-alih ketergantungan hard-coding, modul dirancang untuk menerima sumber daya eksternal, membuatnya kurang berpasangan erat.

Manfaat Menggunakan Sunjeksi Ketergantungan

  • [[OGALT:0]]Pengujian Terimpor: Dependensi dapat diganti dengan objek yang diolok, membuat uji unit lebih mudah dan lebih dapat diandalkan.
  • [[FLLT:0]]Peringkat Fleksibilitas: Mengubah suatu dependensi tidak memerlukan modifikasi modul dependen.
  • [[ZANFAIL:0]]Organisasi Kode Bitter: Mempromosikan pemisahan kekhawatiran dan arsitektur pembersih.

Implementasi Penolakan Ketergantungan

Ada beberapa cara untuk menerapkan DI:

  • Mengeluarkan:]Konstruktor Injeksi: Dependensi disediakan melalui konstruktor kelas.
  • [[NOLGAL:0]]Setter Injection: Dependensi ditetapkan menggunakan metode setter setelah pembuatan objek.
  • [[NOLGAL:0]]Injeksi Antarmuka: Dependensi disediakan melalui metode antarmuka.

Contoh Penolakan Ketergantungan dalam Praktek

mempertimbangkan contoh sederhana di mana sebuah DatabaseService tergantung pada sebuah DatabaseConnection[. Menggunakan DI, sambungan disuntikkan ke dalam layanan:

class DatabaseConnection {
 public function connect() {
 // Connection logic
 }
}

class DatabaseService {
 private $connection;

 public function __construct(DatabaseConnection $connection) {
 $this->connection = $connection;
 }

 public function fetchData() {
 $this->connection->connect();
 // Fetch data logic
 }
}

// Injecting dependency
$connection = new DatabaseConnection();
$service = new DatabaseService($connection);

Selama pengujian, Anda dapat mengganti DatabaseConnection dengan objek mengejek untuk mengisolasi DatabaseService dari operasi basis data aktual.

Kekecualian Kesimpulan

Dengan menggunakan pola Dependensi Injeksi meningkatkan kemampuan uji modul perangkat lunak dengan mendekorasinya dari dependensi mereka.Praktat ini mengarah pada kode yang lebih dapat dipertahankan, fleksibel, dan kuat, terutama dalam aplikasi kompleks.