Sobes.tech
Junior — Middle

El tudná magyarázni a Dependency Injection és a Service Locator minta közötti különbséget?

sobes.tech MI

Válasz az MI-től

Függőség injektálás (DI) és a szolgáltatáskereső minta — mindkettő az alkalmazásban lévő függőségek kezelésére szolgál, de megközelítésük különböző:

  • Függőség injektálás — a függőségek kívülről kerülnek átadásra az objektumnak (például konstruktor vagy setter segítségével). Ez nyilvánvalóvá teszi a függőségeket és megkönnyíti a tesztelést, mivel könnyen helyettesíthetők a megvalósítások.

  • Szolgáltatáskereső — az objektum saját maga kérdezi le a függőségeit egy központosított szolgáltatótól (keresőtől). Ez elrejti a függőségeket, ami megnehezítheti a megértést és a tesztelést.

Példa DI-re Flutterben:

class ApiService {}

class UserRepository {
  final ApiService apiService;

  UserRepository(this.apiService);
}

Itt a UserRepository kívülről kapja az ApiService-t.

Szolgáltatáskereső esetén az objektum saját maga fordulna a globális keresőhöz, hogy megszerezze az ApiService-t.