Saya telah membuat aplikasi Java MVC sederhana yang menambahkan catatan melalui formulir data ke database.
Aplikasi saya mengumpulkan data, juga memvalidasi dan menyimpannya. Ini karena data bersumber online dari pengguna yang berbeda. sebagian besar data bersifat numerik.
Sekarang pada data numerik yang disimpan ke dalam basis data (SQL server), saya ingin aplikasi saya melakukan perhitungan dan menampilkan hasilnya. Pengguna tidak tertarik pada bagaimana perhitungan dilakukan sehingga harus dienkapsulasi. Pengguna hanya harus dapat melihat data yang dihitung sederhana (misalnya, data kolom dikurangi B data kolom dibagi dengan data kolom C). Saya tahu cara menulis prosedur tersimpan untuk hal yang sama tetapi saya ingin aplikasi tiga tingkat.
Saya ingin data yang saya masukkan ke dalam database sebagai catatan, dikerjakan dengan melakukan perhitungan di dalamnya. Data asli harus tetap tidak terpengaruh, sedangkan data baru, setelah kalkulasi, harus disimpan sebagai catatan entitas baru ke dalam database.
Di mana saya harus menulis kode untuk perhitungan latar belakang ini? Karena aturan dan logika bisnis, haruskah saya memasukkannya ke file JavaBeans baru?
sumber
Jawaban:
The logika bisnis harus ditempatkan dalam model yang , dan kita harus bertujuan untuk lemak model dan kurus pengendali .
Sebagai titik awal, kita harus mulai dari logika controller. Sebagai contoh: saat pembaruan , controller Anda harus mengarahkan kode Anda ke metode / layanan yang memberikan perubahan Anda ke model.
Dalam model, kita dapat dengan mudah membuat kelas pembantu / layanan tempat aturan atau perhitungan bisnis aplikasi dapat divalidasi.
Ringkasan konseptual
Pengontrol untuk logika aplikasi. Logika yang khusus untuk bagaimana aplikasi Anda ingin berinteraksi dengan "domain pengetahuan" yang dimilikinya.
The model untuk logika yang independen dari aplikasi . Logika ini harus valid di semua aplikasi yang memungkinkan dari "domain pengetahuan" yang dimilikinya.
Dengan demikian, logis untuk menempatkan semua aturan bisnis dalam model.
sumber
The most common mistakes are to implement application logic operations inside the controller or the view(presentation) layer.
[ php-html.net/tutorials/model-view-controller-in-php ]Seperti biasa, itu tergantung pada kompleksitas proyek.
Dalam aplikasi sepele, di mana kompleksitas model domain relatif kecil, Anda dapat menempatkan logika dalam model dan menyebutnya sehari.
Namun, untuk aplikasi yang tidak sepele dengan model yang rumit dan banyak aturan bisnis, lebih baik untuk memisahkan beberapa hal lebih sedikit.
Jika Anda memasukkan logika bisnis yang melibatkan lebih dari satu model dalam suatu model, Anda memperkenalkan hubungan yang erat antara model-model itu. Ketika aplikasi terus tumbuh, model ini cenderung berubah menjadi
god models
, tahu terlalu banyak. Dan ini akan dengan cepat berubah menjadi kekacauan besar yang sulit untuk diuji dan dirawat. Jadi dalam hal ini, akan bermanfaat untuk menempatkan logika di lapisan yang terpisah.Saat memutuskan abstraksi, selalu pertimbangkan kompleksitas dan tujuan aplikasi Anda, dan hindari rekayasa berlebihan. Untuk aplikasi sepele / kecil, memperkenalkan lebih banyak layer daripada yang dibutuhkan meningkatkan kompleksitas alih-alih menguranginya.
Robert Martin (Paman Bob) memiliki posting blog yang bagus tentang hal ini: Arsitektur Bersih.
sumber
The controller interprets the mouse and keyboard inputs from the user, commanding the model and/or the view to change as appropriate
. Itu definisi adaptor.Menempatkan logika bisnis di dalam model mungkin terdengar cara terbaik untuk pergi. Pengontrol menerima panggilan dari aplikasi web jarak jauh. Pengontrol pada layanan web MVC menerima panggilan dan mengalihkan eksekusi ke metode di BL. Sekarang, Logika Bisnis dapat dimasukkan dalam 'Model', tetapi juga dapat diposisikan di beberapa folder lain, katakanlah, 'Logika Bisnis' . Jadi tidak ada aturan yang sulit dan cepat tentang di mana logika bisnis akan berada.
Saya telah menggunakan layanan web yang dibangun di atas MVC 3.0 dan wadah logika bisnis adalah MVC MODEL .
sumber