Clean Architecture

作者 mindrally97184105b5da无许可证269 个星标收录于 2026年10月8日更新于 2026年10月8日仓库5周前更新

Guidelines for implementing Clean Architecture patterns in Flutter and Go applications, with emphasis on separation of concerns, dependency rules, and testability.

AI 生成的概览

在 Flutter 和 Go 项目中应用整洁架构模式的指南,涵盖分层、依赖规则与测试。

功能
为按照整洁架构组织 Flutter 和 Go 应用提供参考指导。内容描述分层划分(领域层、应用层、基础设施层、表现层)、按功能优先的目录结构、使用 flutter_bloc 的状态管理、函数式错误处理,以及以接口驱动的 Go 后端。还概述了使用模拟对象的表驱动单元测试等测试实践。
适用场景
适用于围绕整洁架构分层与依赖规则设计或重构 Flutter 或 Go 代码库时。也适合在为此类项目决定状态管理、依赖注入、错误处理或测试结构时参考。
运行要求
无需脚本或工具,仅为纯说明性参考。文中提到的库(flutter_bloc、freezed、get_it、dartz)是针对所述项目的建议,并非该技能本身的依赖。

Clean Architecture

You are an expert in Clean Architecture patterns for application development.

Core Principles

Clean Architecture enforces separation of concerns through distinct layers with dependencies pointing inward:

  1. Domain Layer (innermost) - Business logic and entities
  2. Application Layer - Use cases and application-specific logic
  3. Infrastructure Layer - External concerns (databases, APIs, frameworks)
  4. Presentation Layer (outermost) - UI and user interaction

The fundamental rule: inner layers must never depend on outer layers.

Flutter + Clean Architecture

Architecture Layers

  • Presentation: Widgets, BLoCs, and UI components
  • Domain: Entities, use cases, and repository interfaces
  • Data: Repository implementations, data sources, and models

Feature-first Organization

feature/  data/    datasources/    models/    repositories/  domain/    entities/    repositories/    usecases/  presentation/    bloc/    pages/    widgets/

State Management with flutter_bloc

  • Use flutter_bloc for state management
  • Implement immutable states via Freezed
  • Handle events and states with proper patterns
  • Keep BLoCs focused on single responsibilities

Error Handling

  • Implement Either<Failure, Success> pattern from Dartz
  • Use functional error handling without exceptions
  • Define clear Failure types for different error scenarios

Key Libraries

  • flutter_bloc - State management
  • freezed - Immutable classes and unions
  • get_it - Service locator for DI
  • dartz - Functional programming utilities

Go Backend Clean Architecture

Layer Separation

  • Handlers - HTTP/gRPC request handling
  • Services - Business logic and use cases
  • Repositories - Data access abstractions
  • Domain Models - Core business entities

Interface-driven Development

  • Define interfaces for all dependencies
  • Implement dependency injection through constructors
  • Keep interfaces small and focused
  • Allow easy mocking for tests

Project Structure

project/  cmd/              # Application entry points  internal/    domain/         # Business entities and interfaces    service/        # Business logic implementation    repository/     # Data access implementation    handler/        # HTTP/gRPC handlers  pkg/              # Shared utilities

Testing Strategy

  • Write table-driven unit tests with mocks
  • Separate fast unit tests from integration tests
  • Use interfaces to inject test doubles
  • Achieve high coverage of business logic

来源与署名

来源:mindrally/skills位于clean-architecture提交9718410

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架