Cobb
Cobb是一个轻量级的Swift库,可以轻松管理依赖注入。
安装
使用CocoaPod安装。
pod 'Cobb'
使用方法
以一个简单的架构为例。
struct NetworkService {
func login(username: String, password: String) -> User {
...
}
}
struct DatabaseService {
func insert(user: User) {
...
}
}
struct Repository {
let network: NetworkService
let database: DatabaseService
func login(username: String, password: String) -> User {
let user = network.login(username: username, password: password)
database.insert(user: user)
return user
}
}
使用Cobb构建器可以定义应用程序各层的依赖关系。
Dependencies {
Factory { Database() }
Factory { NetworkService() }
Singleton { Repository(network: inject(), database: inject()) }
}.dream()
然后在其他类(例如 UIViewController
)或结构体中。
class FirstViewController: UIViewController {
@Injected var repository: Repository
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.global(qos: .utility).async {
let user = repository.login(username: "[email protected]", password: "password")
DispatchQueue.main.async {
// Update UI
}
}
}
}
injected()
会自动解析在 Dependencies
构建器中定义的依赖。
Factory
定义了一个依赖,当解析时返回一个新的实例。
Singleton
定义了一个依赖,它具有单例的行为,所以当解析时在整个应用程序中返回相同的实例。
dream()
实际上配置了依赖。
@Injected
解析依赖并返回指定类型的实例。
就这些!
作者:
Dario Pellegrini,[email protected]
许可协议
Cobb可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。