一款 macOS 应用,图形化控制 iOS、tvOS、watchOS 模拟器,底层封装 Apple 的 simctl 命令。
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 数据每日更新。
相关项目
为 Xcode 提供 GitHub Copilot 支持的 AI 编程助手,涵盖代码补全、对话与 Agent 模式。
一款 macOS 工具,关闭 iOS、tvOS、watchOS、visionOS 模拟器中用不到的后台服务,让一台 Mac 能同时运行更多模拟器。
一个 PHP 组件,用于统一、集中管理应用中对象的构造与依赖注入方式。
一个用于构建 Apple 平台应用的 Swift 库,提供统一的状态管理、可组合的功能模块与便于测试的副作用处理。
一款 macOS 应用,通过图形界面安装并切换多个版本的 Xcode。