Lazuardy
2 min readJul 15, 2020

--

Bermaksud membenarkan.., pada laman https://pub.dev/packages/get_it telah dijelaskan bahwa pustaka ini merupakan service locator. Service locator adalah salah satu design pattern dan berbeda dengan teknik dependency injection. Walaupun keduanya bermaksud untuk meningkatkan decoupling, namun konsep dasarnya berbeda.

Service locator memiliki konsep "untuk mengambil" yang artinya kita mengambil instance objek lain dari sebuah objek service locator. Untuk membuat design pattern seperti ini sebenarnya mudah, kita cukup membuat sebuah objek service locator yang memiliki fungsi generik untuk menyimpan instance dari objek lain yang telah mendaftarkan dirinya ke objek service locator tersebut, alhasil objek service locator ini dapat digunakan untuk memberi instance dari sebuah objek ke kelas lain yang membutuhkan.

Teknik dependency injection memiliki konsep "untuk memberi" yang artinya kita perlu mengkonfigurasi dependency injection pada proyek aplikasi, lalu dependency injection framework akan memberi instance objek sesuai permintaan kita secara "automagically".

Perbedaan mendasar dari keduanya adalah jika service locator perlu dikonfigurasi ulang untuk pendaftaran objek agar kita dapat menggunakannya sebagai "tempat pengambilan" instance dari objek-objek yang telah didaftarkan saat ingin melakukan mocking / unit testing, sedangkan dependency injection tidak perlu seperti itu, karena telah dikonfigurasi sekali pada proyek, dan dapat digunakan kapanpun dimanapun.

Saat ini baru ada 2 pustaka untuk dependency injection di flutter & dart:

https://pub.dev/packages/flutter_simple_dependency_injection

https://github.com/google/inject.dart

Pelajari perbedaan service locator design pattern & teknik dependency injection disini:

https://softwareengineering.stackexchange.com/questions/390755/whats-the-difference-between-using-dependency-injection-with-a-container-and-us

https://medium.com/@ivorobioff/dependency-injection-vs-service-locator-2bb8484c2e20

Sedikit tambahan juga, teknik dependency injection pada flutter sebenarnya agak susah dilakukan karena teknik ini mengandalkan fitur reflection pada sebuah bahasa pemrograman. Pada dart fitur ini bernama mirroring (https://api.dart.dev/stable/2.8.4/dart-mirrors/dart-mirrors-library.html). Sayangnya, flutter tidak memberi fitur mirroring tersebut untuk alasan perfroma (https://flutter.dev/docs/resources/faq#does-flutter-come-with-a-reflectionmirrors-system).

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Lazuardy
Lazuardy

Written by Lazuardy

We help businesses through bleeding edge technology — www.lazuardy.tech.

Responses (1)

Write a response