Apakah ada pola desain selain MVC untuk web?

15

Saya ingin tahu apakah ada pola desain untuk web selain MVC?

Saya tahu ada pola desain seperti: Registry, Observer, Factory, ActiveRecord, ... dan MVC satu set pola desain lain dan struktur folder.

Apakah ada pola desain seperti MVC yang merupakan set pola desain lainnya?

Sunting: bahasa pemrograman saya adalah PHP.

Saeed M.
sumber
Selalu ada pola BBOM .
zzzzBov
1
@ Mr-Moqadam, silakan lihat - meta.stackexchange.com/questions/5234/...
Yusubov
Saya yakin jawaban di bawah ini menjawab semua segi pertanyaan Anda. Anda dapat menerima yang terbaik dan membantu komunitas.
Arpith
Bagaimana dengan pola Fluks FB.
Muhammad Umer
Lihat Tampilan Pertama juga.
nawfal

Jawaban:

25

Ada berbagai pola dalam pengembangan perangkat lunak; MVP, MVVM, MVC, dll. Adalah beberapa yang terkenal. Namun, Anda harus mendefinisikan masalah atau teknologi spesifik yang ingin Anda pecahkan atau gunakan.

masukkan deskripsi gambar di sini

Masing-masing pola ini baik untuk menyelesaikan beberapa masalah tertentu. Sebagai contoh, pola MVP (Model View Presenter) membantu untuk memperkenalkan pemisahan masalah dalam pengembangan ASP.NET WebForms. Ini terdiri dari membagi tanggung jawab untuk mengumpulkan, menampilkan, dan menyimpan data dari halaman web menjadi objek terpisah: objek Model, objek Tampilan, dan objek Presenter.

Buku resep pola desain umum yang paling terkenal adalah pola desain Gang of Four (GoF) .

masukkan deskripsi gambar di sini

Sunting: saya kira Anda lebih tertarik menerapkan pola desain pada platform .NET

Yusubov
sumber
1
+1 kita akan hidup dengan MVC didefinisikan sebagai pola, atau teknik yang akan melihat segera atau dekat melihat penggantinya?
Independen
6
+1 tetapi MVP, MVVM dan MVC adalah semua variasi dari tema yang sama: memisahkan (g) ui dari logika model dan memiliki beberapa pihak ketiga (pengontrol, presenter) menengahi di antaranya.
Marjan Venema
2
@ Mr-Moqadam: MVC terlihat seperti berlebihan dan rumit pada awalnya. Itu melakukan apa yang harus Anda lakukan, memisahkan UI, logika dan data. Satu-satunya hal yang pasti dalam pengembangan perangkat lunak adalah perubahan. Dan sebagai aturan praktis; 20% adalah pengembangan, 80% mempertahankan. Dari perspektif itu, MVC pasti sepadan dengan usaha. Ini juga merupakan pola paling dasar untuk mencapai ini, saya kira.
Bruno Schäpper
3
@ Mr-Moqadam: Tidak, itu sangat membantu Anda, bahkan jika Anda sendirian. Dan terutama dalam proyek-proyek besar.
Bruno Schäpper
1
@ Mr-Moqadam Siapa yang pernah mengatakan bahwa MVC adalah pola pengembangan tim? Saya telah mengembangkan untuk waktu yang lama sendirian menggunakan PHP dan MVC adalah wajib bagi saya untuk menjaga hal-hal tetap terjaga. Sudahkah Anda mencoba menggunakan kerangka kerja PHP?
Songo
7

Pola yang bagus, yang saya temui beberapa minggu yang lalu, adalah MOVE . Ini terlihat sedikit lebih canggih dari MVC, tetapi didasarkan pada prinsip yang sama. Satu kelemahan dari MVC adalah pengendali Anda bisa menjadi sangat, sangat besar. Menggunakan pola MOVE, Anda akan menangani masalah ini, sedikit.

Pola lain, dinamai oleh yang lain, juga merupakan alternatif yang baik.

Jan_V
sumber
Saya pikir MVC dipromosikan menggunakan Controllers yang tipis ?! Anda tahu pepatah "Thin Controllers & Fat Models"
Songo
Memang begitu, tetapi dalam kenyataannya pengendali cenderung menjadi sangat gemuk.
Jan_V
2
Itu karena Anda memasukkan logika domain ke dalam pengontrol, yang bukan maksud dari jenis asli MVC Krassner & Pope. Pengontrol dengan cara asli adalah tentang penanganan input, misalnya. menghubungkan klik mouse pada (X, Y) berkoordinasi ke dalam operasi model (seperti, meningkatkan suhu di aplikasi termostat). Yang mengatakan, sebagian besar lapisan pengontrol dalam arti MVC sepenuhnya otomatis, dan karena itu, tidak terlihat oleh pengembang aplikasi dalam suatu kerangka kerja.
Aadaam
adalah MOVE seperti fluks
Muhammad Umer
4

Hal pertama yang harus ditetapkan adalah apa yang sebenarnya perlu Anda lakukan, untuk memutuskan apakah kerangka kerja dan / atau MVC (atau pola desain lainnya) akan bermanfaat.

Kerangka kerja ada untuk menyediakan platform yang konsisten untuk pengembangan sementara biasanya memberikan solusi untuk persyaratan pemrograman umum (seperti interaksi basis data, pembuatan dan validasi formulir, otentikasi pengguna, dll.)

Untuk PHP setidaknya pola desain MVC / HMVC cenderung mendominasi kerangka kerja utama yang tersedia (misalnya Zend , CakePHP , CodeIgniter dll.) Tetapi ada banyak pola desain berbeda yang dapat digunakan.

MVC sangat populer karena menawarkan cara yang mapan dan dipahami untuk memisahkan pemodelan data dan pemrosesan logika dari lapisan tampilan / presentasi (sesuatu yang dianggap diinginkan untuk menghasilkan aplikasi yang kuat dan dapat diskalakan).

Penting untuk dicatat (dan seperti yang diungkapkan oleh @Marjan Venema dalam komentar untuk jawaban @ ElYusubov) bahwa MVC, MVP, MVVM, dan pola MV x lainnya (pada prinsipnya setidaknya) semua 'pola desain' yang sama.

Pola desain yang berbeda biasanya semua melayani (seringkali secara halus) tujuan yang berbeda dan dalam beberapa kasus dikembangkan dengan bahasa tertentu dalam pikiran. Namun 'pola desain' yang sebenarnya bukanlah aturan yang sulit dan cepat untuk pemrograman dan lebih merupakan pemahaman filosofis / idealogis tentang implementasi program dan persyaratan desain serta fungsi logis.

Penelitian adalah cara terbaik untuk mengetahui tentang berbagai prinsip pemrograman dan praktik terbaik, berikut ini beberapa tautan Wikipedia untuk membantu Anda memulai:

Dalam praktik tidak ada yang menghentikan Anda dari menerapkan 'pola' Anda sendiri, IMO cara terbaik adalah belajar sambil bekerja, bagi saya setidaknya saya tidak sepenuhnya memahami pola MVC sampai saya mulai mencoba menulis situs web yang menggunakannya.

Setelah Anda memahami beberapa konsep pemrograman dan praktik terbaik, Anda dapat menggunakannya untuk membangun sistem Anda sendiri untuk menyelesaikan masalah spesifik yang Anda hadapi dan untuk memenuhi kebutuhan Anda, apakah itu sesuai dengan 'pola' yang sudah ada atau tidak.

Jika Anda tidak memiliki serangkaian masalah khusus untuk dipecahkan maka mempelajari salah satu kerangka kerja yang umum adalah pilihan terbaik Anda.

Chris
sumber
3

Salah satu contoh paling terkenal adalah Knockout.js yang merupakan kerangka kerja javascript yang menggunakan pola desain MVVM . Ada artikel bagus di sini tentang stack overflow membandingkan kerangka kerja MVC Backbone.js vs Knockout.js .

Sidenote adalah bahwa pola desain MVVM berasal dari Microsoft sebagai spesialisasi pola desain PM Martin Fowler. MVVM digunakan secara luas oleh aplikasi WPF.

dodgy_coder
sumber
halaman tidak ditemukan!
Muhammad Umer
1
@MuhammadUmer Terima kasih, saya telah memperbarui tautannya. Sayangnya StackOverflow menghapus pertanyaan 1.000 poin itu. Untungnya, mesin wayback tidak memiliki sistem moderasi yang ketat.
dodgy_coder
Tidak heran sama sekali ... saya berharap semua situs se menjadi seperti ini juga.
Muhammad Umer
0

Seperti yang ditunjukkan ElYusubov, kerangka ASP.Net telah lama memiliki pola MVP dan MVVM, jika Anda mencari contoh yang relatif umum. Salah satu perbedaan utama antara MVC dan MVVM adalah bagaimana entitas Anda diperbarui; MVC lebih cocok untuk pendekatan tradisional tanpa kewarganegaraan atau semi-kewarganegaraan dari aplikasi web. Kerangka kerja ASP.Net mencoba mengatasi hal ini dengan menjaga negara Anda tertanam dalam formulir (sehingga dapat dikembalikan pada setiap permintaan), yang membuat pola MVP dan MVVM lebih masuk akal di sana.

Dengan HTML5, aplikasi menjadi semakin berat JavaScript, dengan sebagian besar status mereka berada di klien. Hal ini dapat menyebabkan kebangkitan dalam kerangka kerja MVVM, dan Knockout JS adalah salah satu contohnya.

Daniel B
sumber
0

Sebagian besar pola di alam liar adalah MVC, atau beberapa rasa MVC. Setelah semua itu masuk akal untuk membagi data Anda (Model), representasi (Lihat) dan interaksi dengannya (Pengendali). Jika Anda melihat MVC seperti yang didirikan pada 80-an, Anda akan menemukan itu tidak pernah dimaksudkan sebagai kerangka kerja web. Jadi saya menemukannya terlalu terbebani di web.

Pola terkenal lainnya adalah Arsitektur Berorientasi Layanan (SOA). Dibangun di atas itu, pendekatan modern akan memiliki MVC (atau rasa) di server Anda, hanya untuk mengekspos layanan yang dapat Anda gunakan. Di sisi klien akan ada aplikasi gaya MVC lainnya, misalnya aplikasi web yang didukung HTML5 dan JavaScript (misalnya Twitter atau Linked In). Aplikasi klien akan menggunakan layanan sisi server Anda ("Tampilan" server) sebagai Modelnya. IMHO, ini akan menjadi canggih dan mungkin akan mendorong sisi server hanya samping MVC.

Bruno Schäpper
sumber
0

Saya pribadi mencari untuk menerapkan sesuatu yang menggunakan ide Representasi Metode Sumber Daya , meskipun pada tahap ini sebagian besar hanya sebuah eksperimen lebih dari yang lain. Itu memang memiliki beberapa poin menarik dalam memodelkan permintaan HTTP / respon yang lebih baik dari MVC (yang dimaksudkan untuk aplikasi berumur panjang yang berjalan pada satu komputer dibandingkan dengan sesi permintaan / respons yang berumur pendek). Namun, itu memang memiliki kelemahan bahwa jika Anda memasukkan metode dalam sumber daya Anda untuk menangani GET, POST, PUT, DELETE, dll, maka sumber daya Anda akan digabungkan ke ujung depan. Saya pikir saya akan memisahkan itu ke dalam lapisan lain.

GordonM
sumber
0

Ada lebih dari 1000 cara kecuali MVC beberapa di antaranya mirip dengan MVC dan beberapa sama sekali berbeda

sebagai contoh :

  1. Model-Templat-Tampilan - MTV
  2. Model – view – presenter - MVP
  3. HMVC model-tampilan-pengontrol hierarki
  4. Tampilan Model ViewModel- MVVM

dll

Saurabh Chandra Patel
sumber
1
ini tampaknya tidak menawarkan sesuatu yang substansial atas poin yang dibuat dan dijelaskan dalam 7 jawaban sebelumnya
nyamuk
Saya kira ini adalah pertanyaan paling sederhana.
Saurabh Chandra Patel