Sobes.tech
Junior — Middle

¿Puede explicar el principio de funcionamiento del patrón Service Locator y su aplicación en la arquitectura de aplicaciones?

sobes.tech AI

Respuesta de la IA

El patrón Service Locator se utiliza para gestionar las dependencias en una aplicación. Su esencia radica en que hay un objeto centralizado — el localizador de servicios, que sabe cómo crear y proporcionar los servicios necesarios (objetos responsables de funciones específicas).

Aplicaciones:

  • En lugar de que cada clase cree o reciba dependencias directamente, se refiere al Service Locator.
  • Esto simplifica la sustitución de implementaciones de servicios (por ejemplo, para pruebas).
  • Ayuda a evitar una fuerte dependencia entre componentes.

Ejemplo en 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
    }
}

// Uso:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)

if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
    analyticsService.track(event: "AppStarted")
}

Contras: puede complicar el seguimiento de dependencias y las pruebas si se usa sin precaución.