Pengantar singkat tentang dependency injection

date 18 Aug 2021
date Fathurrahman
date 31
date Mobile App
Pengantar singkat tentang dependency injection

pengantar

Dalam rekayasa perangkat lunak , dependency injection adalah teknik di mana satu objek (atau metode statis) memasok dependensi objek lain. Ketergantungan adalah objek yang dapat digunakan ( layanan ).

Itu definisi Wikipedia tapi tetap saja, tapi itu tidak terlalu mudah untuk dipahami. Jadi mari kita memahaminya dengan lebih baik.

Sebelum memahami apa artinya dalam pemrograman, mari kita lihat dulu apa artinya secara umum karena ini akan membantu kita memahami konsep dengan lebih baik.

Ketergantungan atau dependen berarti mengandalkan sesuatu untuk mendapatkan dukungan. Seperti jika saya katakan kita terlalu bergantung pada ponsel daripada itu berarti kita bergantung pada mereka.

Jadi sebelum masuk ke dependency injections, pertama-tama mari kita pahami apa yang dimaksud dengan dependency dalam pemrograman.

Ketika kelas A menggunakan beberapa fungsionalitas kelas B, maka dikatakan bahwa kelas A memiliki ketergantungan kelas B.

Di Java, sebelum kita dapat menggunakan metode dari kelas lain, pertama-tama kita perlu membuat objek dari kelas tersebut (yaitu kelas A perlu membuat turunan dari kelas B).

Jadi, mentransfer tugas membuat objek ke orang lain dan langsung menggunakan dependensi disebut dependency injection

 

Mengapa saya harus menggunakan dependency injection ?

Katakanlah kita memiliki kelas mobil yang berisi berbagai objek seperti roda, mesin, dll.

Di sini kelas mobil bertanggung jawab untuk membuat semua objek ketergantungan. Sekarang, bagaimana jika kita memutuskan untuk membuang MRFWheels di masa depan dan ingin menggunakan Yokohama Wheels?

Kita perlu membuat ulang objek mobil dengan ketergantungan Yokohama baru. Tetapi ketika menggunakan injeksi ketergantungan (DI), kita dapat mengubah Roda saat runtime (karena dependensi dapat disuntikkan saat runtime daripada pada waktu kompilasi).

Anda dapat menganggap DI sebagai perantara dalam kode kami yang melakukan semua pekerjaan membuat objek roda pilihan dan menyediakannya ke kelas Mobil. Itu membuat kelas Mobil kami independen dari membuat objek Roda, Baterai, dll.

 

 

Pada dasarnya ada tiga jenis injeksi ketergantungan:

  1. injeksi konstruktor: dependensi disediakan melalui konstruktor kelas.
  2. injeksi penyetel: klien mengekspos metode penyetel yang digunakan injektor untuk menyuntikkan ketergantungan.
  3. injeksi antarmuka: ketergantungan menyediakan metode injektor yang akan menyuntikkan ketergantungan ke klien mana pun yang diteruskan ke sana. Klien harus mengimplementasikan antarmuka yang memperlihatkan metode penyetel yang menerima ketergantungan.

 

Jadi sekarang tanggung jawab dependency injection untuk:

  1. Buat objek
  2. Ketahui kelas mana yang membutuhkan objek itu
  3. Dan berikan mereka semua benda itu

Jika ada perubahan pada objek, maka DI melihat ke dalamnya dan seharusnya tidak menyangkut kelas yang menggunakan objek tersebut. Dengan cara ini jika objek berubah di masa depan, maka tanggung jawab DI untuk menyediakan objek yang sesuai ke kelas.

 

 

Manfaat menggunakan DI

  1. Membantu dalam pengujian Unit.
  2. Kode pelat boiler dikurangi, karena inisialisasi dependensi dilakukan oleh komponen injektor.
  3. Memperluas aplikasi menjadi lebih mudah.
  4. Membantu mengaktifkan kopling longgar, yang penting dalam pemrograman aplikasi.

 

Kekurangan DI

  1. Ini agak rumit untuk dipelajari, dan jika digunakan secara berlebihan dapat menyebabkan masalah manajemen dan masalah lainnya.
  2. Banyak kesalahan waktu kompilasi didorong ke run-time.
  3. Kerangka kerja injeksi ketergantungan diimplementasikan dengan refleksi atau pemrograman dinamis. Hal ini dapat menghambat penggunaan otomatisasi IDE, seperti "temukan referensi", "tampilkan hierarki panggilan" dan refactoring aman.

Anda dapat menerapkan injeksi ketergantungan sendiri (Vanilla Murni) atau menggunakan pustaka atau kerangka kerja pihak ketiga.

fathur.png

Fathurrahman

Android Mobile

Hallo saya trainer Android Mobile di Mataweb dan saya sudah berpengalaman lebih dari 5 tahun. jadi kali ini saya akan share tutorial ataupun tips seputar mobile aplikasi. Salam kenal

Artikel Terkait

Halo, ada yang bisa kami bantu?