Clean Architecture организует приложение в концентрические слои, где зависимости всегда указывают внутрь — внешние слои зависят от внутренних, никогда наоборот. Это позволяет держать бизнес-логику изолированной от фреймворков, UI и баз данных.
Presentation → Domain ← Data
Domain слой определяет протоколы (интерфейсы), которым должны следовать внешние слои. Например, протокол репозитория объявляется в Domain, но реализуется в Data слое:
// Domain Layer
protocol UserRepository {
func fetchUser(id: String) -> User
}
// Data Layer
class UserRepositoryImpl: UserRepository {
func fetchUser(id: String) -> User { ... }
}
Такое разделение делает кодовую базу масштабируемой, поддерживаемой и тестируемой — основные бизнес-правила остаются стабильными даже при смене внешних инструментов и UI-компонентов.
В Clean Architecture слой Data может напрямую зависеть от слоя Presentation, чтобы предоставить отзыв UI когда сетевые запросы завершаются.
Новый — ещё не проверен сообществом
Вы