zl程序教程

您现在的位置是:首页 >  后端

当前栏目

SwiftUI 编程能力提升之 为 Swift 构建一个灵活的依赖注入库

注入依赖编程 一个 构建 提升 能力 swift
2023-09-11 14:18:29 时间

依赖注入是一种编程概念,可提高可测试性并允许轻松解耦类。它通过要求在使用给定类的依赖项之前将其传递给它来实现这一点。与 DRY 规则一起,我建议程序员始终遵循依赖注入,因为我们的代码有这些额外的好处:

  • 通过允许注入 Mock 类来提高可测试性
  • 隐含类所需的依赖关系,提供有关它可能做什么的信息
  • 更好的代码模块化,创建类注入其他人使用
  • 结合协议,通过在依赖项前面使用协议来帮助解耦类

如果我们查看我们的设计原则,我们可以看到这是一种控制反转 (IoC),我们正在将控制卸载到另一个流程以实现我们的结果。附加流可以是库、框架或通用代码。遵循 IoC 原则可以让我们的程序更加模块化,并提高它的可重用性。

依赖注入可以通过多种方式完成。您可以在初始化期间、在属性中或在方法的参数中注入依赖项。初始化程序注入将依赖项放入类的初始化程序中。这有助于显示该类在我们使用它时具有哪些依赖关系,从而深入了解该类可能在做什么。属性注入通过直接设置属性在类创建后注入依赖项。如果忘记了依赖项,这可能会有点风险。方法注入在调用方法时传递了依赖项。然后可以在方法中直接使用依赖项,并在调用方法时提供更大的灵活性。

基本容器

现在让我们看看如何使用依赖注入,并一起创建一个使用最少代码但灵活的库。

我们将从定义网络层开始。

protocol NetworkingLayer {
  func makeRequest()
}

class AppNetworkingLayer: NetworkingLayer {
  func makeRequest() {
    print("AppNetworkingLayer made a request")
  }
}

class MockNetworkingLayer: NetworkingLayer {
  func m