İ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. OrderAyrıca bir yöntem olurdu AddOrderItem(Product product, int amount)ve Orderzaten bir olup olmadığını kontrol ediyorum OrderLinebu özel ürün için.
Böyle bir modelde, Repositoryverilere erişmek veya Factoryvarlı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 LayerMü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
Orderfiyatı 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.