Cara membuat model melakukan lebih dari pengaturan dan mendapatkan data serta validasi

8

Saya mengajukan pertanyaan ini karena setelah mengembangkan beberapa solusi cms khusus kecil dalam suatu kerangka kerja, saya mengembangkan gagasan bahwa Model dapat dengan mudah diganti dengan ORM yang memudahkan tugas memvalidasi, mendapatkan dan mengatur data, karena hanya itulah yang dibutuhkan untuk .
Baru-baru ini saya mendapat pesanan untuk solusi manajemen klien kustom yang kompleks. Setelah meneliti sedikit tentang bagaimana melanjutkannya, saya menemukan ini:
http://blog.astrumfutura.com/2008/12/the-m-in-mvc-why-models-are-misunderstood-and-unappreciated/

Sekarang idenya bukan hal baru seperti yang saya baca tentang pendekatan MVC, model menangani logika bisnis. Tetapi saya merasa sulit untuk merencanakan pendekatan di mana Model menangani logika bisnis dan kelas yang lengkap dalam diri mereka sendiri karena jenis pekerjaan yang saya sudah terbiasa.
Tolong bantu saya di sini dengan menjelaskan ide dan menunjuk saya ke beberapa contoh, artikel dll

kapv89
sumber
Pertanyaan yang bagus Saya belum memikirkan hal ini sebelumnya.
Saeed Neamati
Tautan yang bagus ... teknologi apa yang Anda gunakan ... ASP.Net?
IAbstract
IAbstract, saya menggunakan domba hitam teknologi dev, php. Namun, sudah menjadi cukup baik sejak 5.3. Dulu bekerja di codeigniter, sekarang bekerja di fuelphp (pada dasarnya codeigniter untuk php5.3)
kapv89

Jawaban:

5

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.

Elang
sumber
itu jawaban yang sangat informatif. Terima kasih. Dari apa yang saya pahami, saya mungkin perlu memperluas kelas orm untuk menambahkan fungsionalitas yang mungkin saya butuhkan, atau lebih tepatnya, mendefinisikan lapisan kedua model di atas lapisan ORM yang menerapkan logika bisnis ke objek yang bekerja. Apakah saya benar? (Juga, saya memesan buku itu segera)
kapv89
Tidak dapat mengedit lagi, tetapi dengan memperluas calsses ORM, maksud saya memperluas model yang mewakili database
kapv89
@ kapv89: Terkadang lebih baik membungkus / memperluas kelas, terutama untuk transfer. Lihat pola DTO (Objek Transfer Data) untuk mendapatkan lebih banyak wawasan.
Falcon
Saya telah memikirkan apa yang Anda katakan dalam posting Anda dan membaca tentang model gemuk dan Desain yang digerakkan oleh domain. Saya pikir saya punya beberapa ide sekarang tentang bagaimana menjalankan proyek ini. Terima kasih. saya juga telah memesan buku itu dan akan membacanya saat mengerjakan proyek ini
kapv89