美文网首页
Resolver-Swift版超轻依赖注入/服务定位器框架

Resolver-Swift版超轻依赖注入/服务定位器框架

作者: 怪客半 | 来源:发表于2020-09-30 16:27 被阅读0次

    GitHub.md翻译

    icon

    iOS上Swift 5.1的超轻依赖注入/服务定位器框架。

    介绍

    依赖注入框架支持控制反转设计模式。抛开技术上的依赖性,可以归结为:

    | 给一个对象提供它需要做的事情。

    就这样。依赖注入允许我们编写松散耦合的代码,因此,更易于重用、模拟和测试。

    详细信息,请参见: A Gentle Introduction to Dependency Injection.

    依赖注入策略

    有六种典型的依赖注入策略:

    1. 界面注入Interface Injection
    2. 属性注入Property Injection
    3. 构造器注入Constructor Injection
    4. 方法注入Method Injection
    5. 服务定位器Service Locator
    6. 注解Annotation (NEW)

    Resolver支持这6种策略。请按照链接进行简要说明、示例以及了解每种方法的优缺点。

    属性包装器

    Resolver现在支持在Swift5.1中使用新的属性包装语法解析服务。

    class BasicInjectedViewController: UIViewController {
        @Injected var service: XYZService
        @LazyInjected var service2: XYZLazyService
    }
    

    只需添加注入关键字,您的依赖项将自动解析。参见 注释 了解有关此策略和其他策略的更多信息。

    特点

    Resolver只用了300多行代码实现,但它在这300行代码中包含了大量特性。

    TLDR:如果没有其他内容,请确保您阅读了有关自动类型推断作用域Optionals的内容。
    TLDR应该是英文中“太长不看”的意思。

    使用Resolver

    使用Resolver是一个简单的三步过程:

    1. 将Resolver添加到项目中。
    2. 注册应用程序所需的类和服务。
    3. 在需要时使用Resolver来解析这些实例。

    安装

    Resolver支持CocoaPods和Swift包管理器。

    pod "Resolver"
    

    Resolver本身只是一个源文件(Resolver.swift),所以下载文件并将其添加到项目中也很容易。

    请注意,当前版本的Resolver(1.1)支持Swift 5.1,并且此版本当前支持的iOS的最低版本是iOS11。

    请阅读安装指南,以获取有关支持早期版本的信息。

    Resolver优势

    如前所述,Resolver是一个超轻依赖注入系统,仅用300多行代码实现,并包含在单个文件中。

    分解器也是为性能而设计的。例如SwinjectStoryboard,是一个很好的依赖注入系统,但是Resolver在解析依赖链时比Swinject快800%。

    不同于其他一些系统,Resolver是用100%的Swift 5语言编写的,没有OC代码,方法转换,或内部依赖关系在OC的runtime阶段。
    (这里的翻译可能不太准确,保留原文:
    And unlike some other systems, Resolver is written in 100% Swift 5, with no Objective-C code, method swizzling, or internal dependencies on the Objective-C runtime.)

    此外,Resolver还有以下优点:

    • 在生产代码中测试(经过很多生产环境的测试?比较靠谱?)。
    • 是线程安全的(假设您的对象是线程安全的)。
    • 有一套完整的单元测试。
    • 是有据可查的。

    Finally, with Automatic Type Inference you also tend to write about 40-60% less dependency injection code using Resolver.
    最后,使用自动类型推断,Resolver编写的依赖注入逻辑大约可以减少40-60%的代码量。
    (这里的翻译可能不太准确,保留原文:
    Finally, with Automatic Type Inference you also tend to write about 40-60% less dependency injection code using Resolver.)

    相关文章

      网友评论

          本文标题:Resolver-Swift版超轻依赖注入/服务定位器框架

          本文链接:https://www.haomeiwen.com/subject/bqouuktx.html