Junior — Middle
Можете ли да обясните принципа на работа на патърна Service Locator и неговото приложение в архитектурата на приложенията?
sobes.tech AI
Отговор от AI
Моделът Service Locator се използва за управление на зависимостите в приложение. Неговата същност е, че съществува централизиран обект — локатор на услуги, който знае как да създава и предоставя необходимите услуги (обекти, отговорни за определени функции).
Приложение:
- Вместо всяка класа директно да създава или получава зависимости, тя се обръща към Service Locator.
- Това улеснява замяната на реализации на услуги (например, за тестове).
- Помага да се избегне силна свързаност между компонентите.
Пример на Swift:
protocol AnalyticsService {
func track(event: String)
}
class ServiceLocator {
static let shared = ServiceLocator()
private var services = [String: Any]()
func addService<T>(_ service: T) {
let key = String(describing: T.self)
services[key] = service
}
func getService<T>() -> T? {
let key = String(describing: T.self)
return services[key] as? T
}
}
// Използване:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)
if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
analyticsService.track(event: "AppStarted")
}
Недостатъци: може да усложни проследяването на зависимости и тестването, ако се използва без внимание.