GitHub.md翻譯

iOS上Swift 5.1的超輕依賴注入/服務定位器框架。
介紹
依賴注入框架支持控制反轉設計模式。拋開技術上的依賴性,可以歸結為:
| 給一個對象提供它需要做的事情。
就這樣。依賴注入允許我們編寫松散耦合的代碼,因此,更易于重用、模擬和測試。
詳細信息,請參見: A Gentle Introduction to Dependency Injection.
依賴注入策略
有六種典型的依賴注入策略:
- 界面注入Interface Injection
- 屬性注入Property Injection
- 構造器注入Constructor Injection
- 方法注入Method Injection
- 服務定位器Service Locator
- 注解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行代碼中包含了大量特性。
- 自動類型推斷
- 作用域:Application, Cached, Graph, Shared, and Unique
- Protocols
- Optionals
- Named Instances
- 參數(shù)傳遞
- 自定義容器和嵌套容器
- 循環(huán)依賴支持
- Storyboard支持
TLDR:如果沒有其他內容,請確保您閱讀了有關自動類型推斷、作用域和Optionals的內容。
TLDR應該是英文中“太長不看”的意思。
使用Resolver
使用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.)