Domain-Driven Design là gì
Thiết kế dựa trên domain nghiệp vụ
DDD là gì
Domain-Driven Design (DDD) là phương pháp phát triển phần mềm tập trung vào mô hình hóa domain nghiệp vụ và cộng tác chặt chẽ giữa lập trình viên và chuyên gia domain.
Thiết kế Chiến lược
| Khái niệm | Mô tả | |-----------|-------| | Bounded Context | Ranh giới mô hình với ngôn ngữ chung | | Ubiquitous Language | Ngôn ngữ chung của team và nghiệp vụ | | Context Map | Bản đồ quan hệ giữa các contexts | | Subdomain | Subdomain (Core/Supporting/Generic) |
Thiết kế Chiến thuật
| Pattern | Mục đích | |---------|----------| | Entity | Đối tượng có identity | | Value Object | Đối tượng giá trị bất biến | | Aggregate | Nhóm entities liên quan | | Aggregate Root | Điểm vào aggregate | | Repository | Truy cập aggregates | | Domain Service | Logic nghiệp vụ ngoài entities | | Domain Event | Sự kiện trong domain | | Factory | Tạo đối tượng phức tạp |
Các loại Subdomains
- Core Domain — lợi thế cạnh tranh
- Supporting Subdomain — hỗ trợ core
- Generic Subdomain — giải pháp tiêu chuẩn
Patterns Tích hợp
| Pattern | Mô tả | |---------|-------| | Shared Kernel | Core chia sẻ giữa contexts | | Customer-Supplier | Quan hệ khách hàng-nhà cung cấp | | Conformist | Tuân thủ mô hình upstream | | Anticorruption Layer | Bảo vệ khỏi mô hình bên ngoài | | Open Host Service | API công khai của context |
Khi nào áp dụng DDD
- Logic nghiệp vụ phức tạp
- Dự án dài hạn
- Tiếp cận chuyên gia domain
- Team sẵn sàng đầu tư thiết kế