Приложение для macOS с графическим интерфейсом управления симуляторами iOS, tvOS и watchOS через инструмент Apple simctl.
hmlongco/Factory
Контейнер внедрения зависимостей для Swift и SwiftUI: регистрируйте фабрики как вычисляемые свойства и задавайте области жизни, контексты и моки для тестов.
- Звёзды
- 2,929
- Форки
- 193
- Открытые issues
- 1
- Последний коммит
- 8 дней назад
Что это?
Factory — библиотека внедрения зависимостей для Swift и SwiftUI на основе контейнеров. Сервис задаётся как вычисляемое свойство Container, возвращающее Factory, а получить его можно через обёртку свойства @Injected, прямой вызов функции или глобальную функцию для работы с зависимостями. Компилятор проверяет, что для каждого внедряемого типа есть фабрика, поэтому об отсутствии регистрации вы узнаете при сборке, а не во время выполнения.
Библиотека покрывает типичные потребности DI-систем: области жизни — singleton, cached, shared и пользовательские области сессии — определяют, как долго живут экземпляры; контексты позволяют подменять реализации для debug-сборок, модульных тестов, превью SwiftUI и UI-тестов. Регистрацию можно заменить мок-объектом одним вызовом — это упрощает настройку превью и тестов на XCTest или Swift Testing.
Factory также поддерживает Observation, @MainActor и изоляцию Swift concurrency, а режим отладки выводит дерево разрешения зависимостей. Библиотека распространяется через Swift Package Manager по лицензии MIT.
Ключевые возможности
- 01Регистрирует сервисы как вычисляемые свойства Container и проверяет наличие фабрик во время компиляции.
- 02Позволяет получать зависимости через обёртки свойств, прямые вызовы фабрик и глобальные функции.
- 03Поддерживает области жизни singleton, cached, shared и пользовательские области.
- 04Предоставляет контексты для debug-сборок, модульных тестов, превью SwiftUI и UI-тестов, чтобы подменять реализации.
- 05Поддерживает контейнеры на основе сцен SwiftUI, Observation и изоляцию @MainActor.
- 06Включает отладочный вывод дерева разрешения зависимостей.
Сценарии использования
- Внедрение сервисов и репозиториев в представления SwiftUI и модели представлений.
- Подмена сетевых сервисов или аналитики моками в превью SwiftUI.
- Написание модульных тестов состояний загрузки, пустого результата и ошибки с помощью подмены зависимостей.
- Структурирование iOS-приложений с архитектурами MVVM, MVP, Clean или VIPER.
Что важно знать
- Подходит только для проектов на Swift и не применяется к другим языкам.
В подборках
Темы
Частые вопросы
- Что такое Factory?
- Контейнер внедрения зависимостей для Swift и SwiftUI: регистрируйте фабрики как вычисляемые свойства и задавайте области жизни, контексты и моки для тестов. Factory — библиотека внедрения зависимостей для Swift и SwiftUI на основе контейнеров. Сервис задаётся как вычисляемое свойство Container, возвращающее Factory, а получить его можно через обёртку свойства @Injected, прямой вызов функции или глобальную функцию для работы с зависимостями. Компилятор проверяет, что для каждого внедряемого типа есть фабрика, поэтому об отсутствии регистрации вы узнаете при сборке, а не во время выполнения.
- Factory можно использовать бесплатно? Какая у него лицензия?
- Factory распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- Factory всё ещё поддерживается?
- Активно поддерживается. Последний коммит в Factory — 28 окт. 2026 г..
- Для чего можно использовать Factory?
- Внедрение сервисов и репозиториев в представления SwiftUI и модели представлений. Подмена сетевых сервисов или аналитики моками в превью SwiftUI. Написание модульных тестов состояний загрузки, пустого результата и ошибки с помощью подмены зависимостей. Структурирование iOS-приложений с архитектурами MVVM, MVP, Clean или VIPER.
- Где скачать Factory?
- Исходный код и инструкции по установке — на GitHub: https://github.com/hmlongco/Factory
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Интеграция GitHub Copilot с Xcode: автодополнение кода, чат, режим агента и проверка кода в проектах на Swift и Objective-C.
CLI и приложение для macOS, отключающие фоновые службы в симуляторах iOS, tvOS, watchOS и visionOS, чтобы на одном Mac помещалось больше симуляторов.
PHP-компонент для стандартизации и централизации создания объектов и связывания их друг с другом в приложении.
Библиотека Swift для разработки приложений на платформах Apple с согласованным управлением состоянием, композиционными функциями, контролем побочных эффектов и широкими возможностями тестирования.
Приложение для macOS, которое позволяет устанавливать несколько версий Xcode и переключаться между ними через графический интерфейс.