Junior — Middle
Můžete vysvětlit princip fungování vzoru Service Locator a jeho použití v architektuře aplikací?
sobes.tech AI
Odpověď od AI
Vzor Service Locator se používá k řízení závislostí v aplikaci. Jeho podstata spočívá v tom, že existuje centralizovaný objekt — lokalizátor služeb, který ví, jak vytvářet a poskytovat potřebné služby (objekty odpovědné za určité funkce).
Použití:
- Místo toho, aby každá třída přímo vytvářela nebo přijímala závislosti, odkazuje na Service Locator.
- To usnadňuje nahrazování implementací služeb (například pro testování).
- Pomáhá vyhnout se silné vazbě mezi komponentami.
Příklad v 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
}
}
// Použití:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)
if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
analyticsService.track(event: "AppStarted")
}
Nevýhody: může ztížit sledování závislostí a testování, pokud je používán bez opatrnosti.