Resolver-Swift版超輕依賴注入/服務定位器框架

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種策略。請按照鏈接進行簡要說明、示例以及了解每種方法的優(yōu)缺點。

屬性包裝器

Resolver現(xiàn)在支持在Swift5.1中使用新的屬性包裝語法解析服務。

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

只需添加注入關鍵字,您的依賴項將自動解析。參見 注釋 了解有關此策略和其他策略的更多信息。

特點

Resolver只用了300多行代碼實現(xiàn),但它在這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優(yōu)勢

如前所述,Resolver是一個超輕依賴注入系統(tǒng),僅用300多行代碼實現(xiàn),并包含在單個文件中。

分解器也是為性能而設計的。例如SwinjectStoryboard,是一個很好的依賴注入系統(tǒng),但是Resolver在解析依賴鏈時比Swinject快800%。

不同于其他一些系統(tǒng),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還有以下優(yōu)點:

  • 在生產代碼中測試(經過很多生產環(huán)境的測試?比較靠譜?)。
  • 是線程安全的(假設您的對象是線程安全的)。
  • 有一套完整的單元測試。
  • 是有據可查的。

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.)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容