Skip to content

Dependency Injection pada Bahasa C#

Reading Time: 2 minutes

Apa itu Dependency Injection?

Dependency Injection adalah teknik yang digunakan untuk menghilangkan ketergantungan suatu objek pada objek lainnya dengan cara menginjeksi atau menyuplai objek yang dibutuhkan pada objek yang membutuhkannya.

Contoh Kasus yang Membutuhkan Dependency Injection

Perhatikan potongan kode berikut.

Potongan kode diatas adalah simulasi penggunaan class repository yang digunakan untuk keperluan operasi database. Biasanya pada method-method di kelas repository akan ada pemanggilan method log pada class Log untuk keperluan pencatatan aktifitas user.

Kelemahan Potongan Kode Diatas

Kekurangan dari potongan kode diatas ada pada class PasienRepository. Perhatikan pada bagian log = new LogToDatabase(); di bagian constructor. Dengan cara seperti ini class PasienRepository sangat bergantung pada objek LogToDatabase. Masalahnya adalah ketika suatu saat terjadi perubahan media pencatatan aktifitas user, misalnya pencatatan harus dilakukan ke media file, maka kita harus mengubah kodingan di class PasienRepository. Pada potongan kode ini, penggunaan objek LogToDatabase memang masih sedikit yaitu hanya pada method AddDataPasien dan method DeleteDataPasien. Pada kodingan aplikasi sebenarnya tentu berbeda sekali, bisa jadi objek LogToDatabase digunakan puluhan kali. Kemudian pada potongan kodingan ini objek LogToDatabase hanya digunakan pada class PasienRepository saja. Pada kodingan aplikasi sebenarnya tentu class Repository tidak hanya satu, bisa puluhan bahkan ratusan. Pasti akan sangat merepotkan untuk mengubahnya. Solusi dari masalah ini adalah dengan menggunakan teknik Dependency Injection.

Perbaikan Kode Diatas

Perhatikan potongan kode berikut yang merupakan perbaikan dari potongan kode sebelumnya.

Penambahan penting pada potongan kode diatas adalah

  1. Pembuatan interface Log
  2. Pembuatan class LogToFile yang mengimplementasikan interface Log
  3. Pengimplementasian interface Log di kelas LogToDatabase. Kebetulan pada potongan kode sebelumnya class LogToDatabase mengimplementasikan method WriteLog(), jadi tinggal menandai saja pada bagian deklarasi class bahwa class LogToDatabase mengimplementasikan interface Log.
  4. Penambahan parameter pada class PasienRepository bertipe ILog.

Dengan kodingan seperti ini, class PasienRepository tidak bergantung lagi pada objek LogToDatabase. Ketika diharuskan melakukan perubahan media pencatatan aktifitas user dari media database ke media file maka kita tidak perlu melakukan perubahan di class PasienRepository, kita hanya perlu menginjeksi objek LogToFile di class Program yang merupakan pengguna class PasienRepository. Constructor class PasienRepository bisa menerima argumen objek LogToDatabase dan objek LogToFile karena kedua objek tersebut mengimplementasikan interface yang sama, yaitu ILog.

Terima kasih. Semoga tulisan ini bermanfaat.

Bagikan artikel

Published inPemrograman

Be First to Comment

    Tinggalkan Balasan

    WhatsApp chat