İstediğiniz mimarinin türüne bağlıdır.
- Etki Alanına Dayalı Tasarım'da, hem veriye hem de işlevselliğe sahip bir Etki Alanı Modeli oluşturursunuz .
Bu, a'nın Order
, siparişin toplam fiyatını temel alan fiyatını döndürecek bir özelliği (veya yöntemi) olduğu anlamına gelir OrderLines
. Order
Ayrıca bir yöntem olurdu AddOrderItem(Product product, int amount)
ve Order
zaten bir olup olmadığını kontrol ediyorum OrderLine
bu özel ürün için.
Böyle bir modelde, Repository
verilere erişmek veya Factory
varlık oluşturmak için a gibi gerçek varlıklar olmayan nesnelere de sahip olursunuz . Bunlara Alan Adı Hizmetleri denir. Bir Uygulama Katmanı, Etki Alanı Hizmetlerini çağırmaktan sorumludur (örneğin, bir varlığı veritabanından almak için) ve daha sonra varlık üzerinde işlevsellik yürütecektir. Application Layer
Mümkün olduğunca ince olmalıdır.
DDD hakkında bu kavramları daha ayrıntılı olarak açıklayan güzel bir makale .
- Bir Anemik Alan Modeli de kullanabilirsiniz . Bu, varlıklarınızın get / set özelliklerinden oluştuğu ve davranış içermediği anlamına gelir. Böyle bir tasarımda, İş Katmanınız
Order
fiyatı hesaplamak ve yinelenenleri kontrol etmek gibi bir davranış içerecektir OrderLines
.
Anemik Alan Modeli'nin kötü bir şey olup olmadığı konusunda farklı görüşler vardır. Şahsen ben gerçek bir Domain Modelini tercih ederim.
Bu makalede , bir Anemik ve Anemik olmayan Etki Alanı Modeli arasındaki farklar açıklanmaktadır.