Sobes.tech
Junior — Middle

Kas saaksite selgitada erinevust sõltuvuse süstimise ja teenuse otsija mustri vahel?

sobes.tech AI

Vastus AI-lt

Sõltuvuste süstimine (DI) ja teenuste lokaliseerija muster — mõlemad kasutatakse sõltuvuste haldamiseks rakenduses, kuid erinevad lähenemisviisilt:

  • Sõltuvuste süstimine — sõltuvused edastatakse objektile väljastpoolt (näiteks konstruktor või setter kaudu). See muudab sõltuvused selgeks ja lihtsustab testimist, kuna saab hõlpsasti asendada teostusi.

  • Teenuste lokaliseerija — objekt ise küsib oma sõltuvused keskse teenuse (lokaliseerija) käest. See varjab sõltuvused, mis võib keerulisemaks muuta mõistmist ja testimist.

Näide DI Flutteris:

class ApiService {}

class UserRepository {
  final ApiService apiService;

  UserRepository(this.apiService);
}

Siin saab UserRepository ApiService väljastpoolt.

Kui kasutatakse teenuste lokaliseerijat, pöördub objekt ise globaalse lokaliseerija poole, et saada ApiService.