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 從公開儲存庫中收錄這些內容。

檢舉或申請下架