Repolode
hmlongco

hmlongco/Factory

面向 Swift 和 SwiftUI 的依赖注入容器,用计算属性注册工厂,支持作用域、上下文和测试替身。

Star
2,930
Fork
194
未关闭 Issue
1
最近提交
10天前

这是什么?

Factory 是面向 Swift 和 SwiftUI 的容器式依赖注入库。开发者在 Container 上以计算属性的形式定义返回 Factory 的服务,再通过 @Injected 属性包装器、直接调用工厂函数或全局依赖函数获取实例。编译器会检查每个被注入的类型是否都有对应工厂,注册遗漏会在编译期暴露,而不是运行时报错。

库中提供单例、缓存、共享以及自定义的 session 等作用域,用于控制实例的生命周期;还提供调试、单元测试、SwiftUI Previews 和 UI 测试等上下文,可在不同场景下替换实现。替换为 mock 只需一次注册调用,便于配置预览和 XCTest、Swift Testing 测试用例。

Factory 兼容 Observation、@MainActor 和 Swift 并发的 actor 隔离,并在 DEBUG 模式下可输出依赖解析树。项目通过 Swift Package Manager 分发,采用 MIT 许可证。

核心功能

  • 01在 Container 上以计算属性注册服务,缺少工厂时编译期即报错。
  • 02提供属性包装器、直接调用工厂和全局依赖函数三种获取方式。
  • 03支持单例、缓存、共享以及自定义等作用域。
  • 04通过调试、单元测试、SwiftUI Previews 和 UI 测试等上下文替换实现。
  • 05兼容基于 Scene 的 SwiftUI 容器、Observation 和 @MainActor 隔离。
  • 06DEBUG 模式下可打印依赖解析树。

适用场景

  • 在 SwiftUI 视图和视图模型中注入服务与仓库。
  • 在 SwiftUI Previews 中用 mock 替换网络或分析服务。
  • 通过覆盖依赖编写加载、空数据和错误状态的单元测试。
  • 在 MVVM、MVP、Clean 或 VIPER 架构的 iOS 应用中组织依赖。

使用前须知

  • 仅适用于 Swift 项目,不适用于其他语言。

收录于专题

标签

常见问题

Factory 是什么?
面向 Swift 和 SwiftUI 的依赖注入容器,用计算属性注册工厂,支持作用域、上下文和测试替身。 Factory 是面向 Swift 和 SwiftUI 的容器式依赖注入库。开发者在 Container 上以计算属性的形式定义返回 Factory 的服务,再通过 @Injected 属性包装器、直接调用工厂函数或全局依赖函数获取实例。编译器会检查每个被注入的类型是否都有对应工厂,注册遗漏会在编译期暴露,而不是运行时报错。
Factory 可以免费使用吗?用的什么许可证?
Factory 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
Factory 还在维护吗?
活跃维护中。Factory 最近一次提交是在 2026年10月28日。
Factory 适合用来做什么?
在 SwiftUI 视图和视图模型中注入服务与仓库。 在 SwiftUI Previews 中用 mock 替换网络或分析服务。 通过覆盖依赖编写加载、空数据和错误状态的单元测试。 在 MVVM、MVP、Clean 或 VIPER 架构的 iOS 应用中组织依赖。
在哪里获取 Factory?
源代码和安装说明在 GitHub 上:https://github.com/hmlongco/Factory

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目