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.
web-development
php
design-patterns
mvc
Saeed M.
sumber
sumber
Jawaban:
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.
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) .
Sunting: saya kira Anda lebih tertarik menerapkan pola desain pada platform .NET
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
Ada lebih dari 1000 cara kecuali MVC beberapa di antaranya mirip dengan MVC dan beberapa sama sekali berbeda
sebagai contoh :
dll
sumber