Swift 的一个非常基础的服务定位器
pod 'BasicServiceLocator'
一旦你设置好你的 Swift 包,添加 SwiftyTimber 作为依赖项就像把它添加到你的 Package.swift 的 dependencies 值一样简单。
dependencies: [
.package(url: "https://github.com/iballan/BasicServiceLocator.git", .upToNextMajor(from: "0.0.3"))
]
// Protocols
protocol ServiceA {}
protocol ServiceB {}
// Implementation
class ServiceAA: ServiceA {}
class ServiceBB: ServiceB {}
// Fake or Debug Implementation
class FakeServiceB: ServiceB{}
// Service Resolver and Container
let serviceLocator : ServiceLocator = BasicServiceLocator()
// Registering
serviceLocator.registerService(ServiceA.self, instance: ServiceAA())
serviceLocator.registerService(ServiceB.self) {
#if DEBUG
return FakeServiceB()
#else
return ServiceBB()
#endif
}
// Fetching and using service
let serviceA = try? serviceLocator.getService(ServiceA.self)
let serviceB = try! serviceLocator.getService(ServiceB.self)