Mungkin ini bahasan basi bwt temen2, cuman kyknya masih relevan dan masih berguna jika diimplementasikan.
Apa itu Dependency Injection (DI)? menurut wiki:
Dependency injection (DI) in object-oriented computer programming is a technique that indicates to a part of a program which other parts it can use, i.e. to supply an external dependency, or reference, to a software component. More simply, dependency injection is the passing or setting of dependencies into a software component. In technical terms, it is a design pattern that separates behavior from dependency resolution, thus decoupling highly dependent components. Instead of components having to request dependencies, they are given, or injected, into the component
Bingung? wkwkkw sama.. pendek kata sih, dengan make dependency injection kita berusaha untuk mendecoupling implementasi kita dengan cara mensuplai Interface aja ke software component yang membutuhkan. contoh sederhana: Repository
mungkin dl pas jaman kuliah kita tinggal pakai repository class untuk transaksi ke database, tp pernah ga tiba2 ada requirement untuk mengubah database dari yang tadinya pake MSSQL ke Oracle, akhrinya kita harus rewrite beberapa bagian dari aplikasi kita untuk mengakomodasi kebutuhan ini. tp dengan menggunakan teknik DI kita dapat menghindari terlalu banyak hardcode untuk mengatasi masalah seperti diatas.
pertama, bikin aja Interface untuk suatu repository
public Interface IIsengRepository
{
void Delete(Iseng);
}
kemudian bikin dua implementation class untuk mengakomodasi 2 database diatas
public class SqlIsengRepository : IIsengRepository
{
public void Delete(Iseng iseng)
{
//Implementation for mssql goes here
}
}
public class OracleIsengRepository : IIsengRepository
{
public void Delete(Iseng iseng)
{
//Implementation for oracle goes here
}
}
nahhh… dengan DI maka semua jadi mudah, tinggal register aja Interface dengan implementasinya ketika application start
public class IsengModule : NinjectModule {
public override void Load() {
Bind<IIsengRepository>().To<SqlISengRepository>();
// Bind<IIsengRepository>().To<OracleISengRepository>();
}
}
dan tinggal dipanggil aja di konstruktor yang membutuhkan implementasi diatas
public class Iseng{
public IIsengRepository _isengRepository{ get; set; }
public Iseng(IIsengRepository isengRepository) {
_isengRepository = isengRepository)
public void DeleteIseng(Iseng iseng)
{
_isengRepository.Delete(iseng);
}
}
pada method load diatas, temen2 tinggal uncomment ato comment deh, kira2 database apa yg akan dipakai. itu cuman dasarnya aja, kl pengen tau lebih dalam tentang DI ini, bisa lgsung ke cek Microsoft Unity atau Ninject, atau mungkin temen2 bisa googling sendiri, kyknya masih banyak library lain yg bs dipakai
(saya cuman pernah pake dua library diatas, mana yg lebih bagus? kembali ke rule pertama, KLIEN ANDA PENGEN MAKE YANG MANA? xixixixi)

Facebook
Twitter
LinkedIn