Cobb 0.2.2

Cobb 0.2.2

Dario Pellegrini 维护。



Cobb 0.2.2

  • 作者:
  • 作者

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文件。