Nedir Domain-Driven Design
İş alanına dayalı tasarım
DDD Nedir
Domain-Driven Design (DDD), iş alanı modelleme ve geliştiriciler ile alan uzmanları arasında yakın işbirliğine odaklanan bir yazılım geliştirme yaklaşımıdır.
Stratejik Tasarım
| Kavram | Açıklama | |--------|----------| | Bounded Context | Evrensel dil ile model sınırları | | Ubiquitous Language | Takım ve işin ortak dili | | Context Map | Bağlamlar arası ilişki haritası | | Subdomain | Alt alan (Core/Supporting/Generic) |
Taktiksel Tasarım
| Pattern | Amaç | |---------|------| | Entity | Kimliği olan nesne | | Value Object | Değişmez değer nesnesi | | Aggregate | İlişkili varlıklar grubu | | Aggregate Root | Aggregate'e giriş noktası | | Repository | Aggregate'lere erişim | | Domain Service | Varlıklar dışında iş mantığı | | Domain Event | Alanda olay | | Factory | Karmaşık nesne oluşturma |
Subdomain Türleri
- Core Domain — rekabet avantajı
- Supporting Subdomain — core'u destekler
- Generic Subdomain — standart çözümler
Entegrasyon Patternleri
| Pattern | Açıklama | |---------|----------| | Shared Kernel | Bağlamlar arası paylaşılan çekirdek | | Customer-Supplier | Müşteri-tedarikçi ilişkisi | | Conformist | Upstream modele uyum | | Anticorruption Layer | Dış modellerden koruma | | Open Host Service | Bağlamın genel API'si |
DDD Ne Zaman Uygulanır
- Karmaşık iş mantığı
- Uzun ömürlü proje
- Alan uzmanlarına erişim
- Tasarıma yatırım yapmaya hazır ekip