Sobes.tech
Junior — Middle

Оё метавонед фарқияти байни Dependency Injection ва pattern-и локатори хидматҳоро шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Вставка зависимостей (DI) ва модел ёдгории хизматрасон — ҳар ду барои идоракунии вобастагиҳо дар барнома истифода мешаванд, аммо дар назария фарқ мекунанд:

  • Вставкаи вобастагиҳо — вобастагиҳо аз берун ба объект гузошта мешаванд (масалан, тавассути конструктор ё setter). Ин вобастагиҳоро ошкор мекунад ва тестро осонтар мекунад, зеро имкон дорад, ки иҷроиҳоро ба осонӣ иваз кард.

  • Локализатори хизматрасон — объект худ вобастагиҳои худро аз маркази хизматрасонӣ (локализатор) мепурсад. Ин вобастагиҳоро пинҳон мекунад, ки метавонад фаҳмиш ва тестро душвор гардонад.

Масалан, дар Flutter DI:

class ApiService {}

class UserRepository {
  final ApiService apiService;

  UserRepository(this.apiService);
}

Ин ҷо, UserRepository ApiService-ро аз берун мегирад.

Дар ҳолати локализатори хизматрасон, объект худ ба локализатори глобалӣ муроҷиат мекунад, то ApiService-ро ба даст орад.