Tergantung pada jenis arsitektur yang Anda inginkan.
- Dalam Desain Berbasis Domain, Anda akan membuat Model Domain yang memiliki data dan fungsionalitas.
Ini berarti bahwa Ordermemiliki properti (atau metode) yang akan mengembalikan harga total pesanan berdasarkan OrderLines. Itu Orderjuga akan memiliki metode AddOrderItem(Product product, int amount)dan Orderakan memeriksa apakah sudah ada OrderLineuntuk produk tertentu.
Dalam model seperti itu Anda juga akan memiliki objek yang bukan entitas nyata, seperti Repositoryuntuk mengakses data atau Factoryuntuk membuat entitas. Ini disebut Layanan Domain. Layer Aplikasi bertanggung jawab untuk memanggil Layanan Domain (misalnya untuk mengambil entitas dari database) dan kemudian akan menjalankan fungsionalitas pada entitas. The Application Layerharus setipis mungkin.
Ini adalah artikel yang bagus tentang DDD yang menjelaskan konsep-konsep ini secara lebih rinci.
- Anda juga dapat menggunakan Model Domain Anemik . Itu berarti bahwa entitas Anda terdiri dari properti get / set dan tidak mengandung perilaku. Dalam desain seperti itu, Lapisan Bisnis Anda akan berisi perilaku, seperti menghitung
Orderharga dan memeriksa duplikat OrderLines.
Ada beberapa pendapat yang berbeda apakah Model Domain Anemik adalah hal yang buruk. Secara pribadi saya lebih suka Model Domain nyata.
Artikel ini menjelaskan perbedaan antara Model Domain Anemic dan non-Anemic.