Anda harus membaca lebih lanjut tentang Desain Berbasis Domain . Pada dasarnya Anda mencoba menangkap persyaratan bisnis menjadi model murni (sebagian besar model objek) yang dapat melakukan semua tugas logis bisnis yang diperlukan. Model ini kemudian dapat dipanggil dari lapisan aplikasi (misalnya tampilan atau pengontrol di MVC, di MVP Anda menyebutnya dan sesuaikan untuk GUI dalam Presenter). Model ini juga harus mengabaikan ketekunan dan hal-hal teknis lainnya.
Enkapsulasi logika bisnis dalam model domain seperti itu memiliki beberapa keuntungan besar:
- Dapat digunakan kembali
- Kemudahan penggunaan dan ekstensi
- Umumnya mengarah ke arsitektur yang lebih baik
- Ini jelas berkomunikasi koherensi dan persyaratan bisnis ...
- ... dan dengan demikian meningkatkan komunikasi antara pengembang, pelanggan, analis, dll.
Saya merekomendasikan buku Eric Evan tentang Desain Domain Driven untuk bacaan lebih lanjut, karena akan mengarahkan Anda ke arah yang benar dan memberi Anda beberapa contoh yang baik tentang di mana harus meletakkan logika mana. Saya bertaruh bahwa pada saat Anda membacanya, sebagian besar entitas Anda akan berisi lebih dari data flat .
Tetapi saya merasa sulit untuk merencanakan pendekatan di mana Model menangani logika bisnis dan kelas yang lengkap dalam diri mereka.
Saya berasumsi, bahwa dengan model Anda sebagian besar mengacu pada entitas dalam konteks ini. Menempatkan logika / perilaku bisnis dalam entitas bukanlah tugas yang sepele. Tapi Anda harus selalu berpikir tentang apa entitas adalah dan apa entitas tidak . Apakah ada beberapa tanggung jawab atau perilaku? Terkadang tidak masalah untuk memiliki entitas tetap jika perilaku atau tanggung jawab dinyatakan lebih baik sebagai layanan.
Misalkan Anda memiliki binatang. Sementara atributnya dapat disimpan secara datar ke database, ia memiliki beberapa perilaku juga. Perlu makan. Tetapi, herbivora tidak akan makan daging, jadi Anda harus memastikannya akan menunjukkan perilakunya ketika programmer ingin memakan daging dengan paksa. Itu bisa bergerak dan bisa membuat suara uniknya sendiri. Ini adalah beberapa hal yang harus dimodelkan menjadi entitas misalnya. Anda yakin tidak akan bergantung pada layanan prosedural untuk membuat hewan-hewan itu makan, bergerak atau membuat suara mereka.
Tetapi semua contoh dangkal tanpa domain bisnis yang konkret. Jadi pikirkan tentang domain bisnis Anda dan tentang entitas, perilaku, dan tanggung jawabnya. Domain bisnis lain mungkin berisi entitas yang mirip dengan orang luar, tetapi memang sesuatu yang sama sekali berbeda atau menunjukkan perilaku yang sama sekali berbeda. Model ini harus menggambarkan domain penggunanya seakurat mungkin dan terutama.