Apakah MVC merupakan Pola Desain atau pola Arsitektur

109

Menurut Sun dan Msdn itu adalah pola desain.

Menurut Wikipedia itu adalah pola arsitektur

Dibandingkan dengan pola desain, pola arsitektur memiliki skala yang lebih besar. (Wikipedia - Pola arsitektur )

Ataukah pola arsitektur yang juga memiliki pola desain?

Mana yang benar ?

JCasso
sumber
1
Karena harus ada Satu Jawaban Benar ...
Mike G
menurut Dave di Product Madness, MVC adalah pola desain, begitu pula RobotLegs. : P
andygoestohollywood

Jawaban:

56

MVC lebih merupakan pola arsitektur, tetapi tidak untuk aplikasi lengkap. MVC sebagian besar terkait dengan lapisan UI / interaksi aplikasi. Anda masih memerlukan lapisan logika bisnis, mungkin beberapa lapisan layanan dan lapisan akses data. Artinya, jika Anda menyukai pendekatan n-tier.


sumber
16
Ya, saya akan mengatakan MVC adalah pola arsitektur untuk tingkat Presentasi Anda.
murki
8
Saya sangat tidak setuju pada "MVC sebagian besar terkait dengan lapisan UI / interaksi aplikasi". "M" / model di MVC adalah lapisan bisnis, yang mungkin ingin Anda bagi menjadi beberapa tingkatan.
mewm
Ya, jawaban ini salah. MVC sama sekali bukan tentang UI / Interaksi. Anda dapat dengan sempurna memiliki MVC di sisi ujung depan dan di sisi ujung belakang, pada awalnya tampilan sering hanya berupa html / js atau .jsp atau .phtml dan server menentukan pengontrol dan modelnya. Contoh JSP (tampilan), JavaBeans (Model), Servlet (pengontrol). Konsep yang sama dengan semua kerangka php terkenal (simfoni, zend, kue, dll.). Tapi sekarang kerangka kerja frontend terlihat seperti aplikasi ujung belakang dan kerangka kerja javascript modern menggunakan MVC (html tampilan Anda, kontrol skrip Anda, dan modelkan objek js Anda sebagai entitas)
amdev
40

Mengapa salah satunya harus benar?

Keduanya bisa jadi benar, tergantung sudut pandangnya.

MVC bisa menjadi pola arsitektural, jika itu membentuk dasar dari arsitektur aplikasi.

Ini juga dapat dilihat sebagai pola desain, gagasan abstrak yang dapat diterapkan untuk aplikasi apa pun.

Oded
sumber
27

Pola desain menunjukkan cara menulis kode secara efektif (mempertimbangkan Metrik Kode ).

Beberapa manfaat:

  1. Mudah Dipelihara
  2. Dapat digunakan kembali yang tinggi
  3. Dapat dibaca karena abstraksi

Pola arsitektur mengatakan bagaimana memanfaatkan sumber daya secara efektif.

  1. Eksekusi tugas paralel seperti programmer dan desainer grafis dapat bekerja secara paralel.
  2. Berbagai teknologi dapat digunakan untuk membangun perangkat lunak.

Di MVC, a). Tampilan dapat dibuat menggunakan template javascript dan juga html dapat digunakan b). Pengontrol dapat ditulis .NET framework dan c). Model dapat ditulis dalam Java - layanan java dapat digunakan yang hanya mengembalikan data json.

Sedangkan dalam pola desain, pola tidak dapat diimplementasikan di mana kode dapat ditulis dalam beberapa teknologi seperti kelas AdminUser di Java, kelas Pelanggan di C #, kelas Mitra di Php dan pola pabrik di Ruby :); hmmm..sangat mudah? :)

vrluckyin.dll
sumber
6

Saya tahu bahwa ini telah dijawab beberapa waktu yang lalu, tetapi belum ada yang menyebutkan buku yang membuat MVC terkenal: Pattern-Oriented Software Architecture (POSA), oleh Buschmann, dkk yang diterbitkan pada tahun 1996. Meskipun tidak seluas buku Design Patterns , oleh Gamma, dkk, POSA adalah salah satu buku dasar yang digunakan oleh komunitas pola.

Oh, dan POSA dengan sangat jelas mengidentifikasi MVC sebagai pola arsitektur. Firasat saya adalah bahwa MS dan Sun hanya ceroboh dan menyebut setiap pola sebagai "pola desain".

John
sumber
3

Saya pikir keduanya benar. Jika Anda melihat contoh MVC tertentu dalam kerangka kerja seperti Ruby on Rails, contoh itu lebih merupakan pola desain. Jika Anda melihat MVC sebagai konsep umum , ini lebih merupakan pola arsitektur.

Jim Ferrans
sumber
3

Pola desain di dalam triad Model / View / Controller (MVC) kelas termasuk dan mungkin tidak terbatas pada:

  • Observer , memisahkan objek sehingga perubahan ke satu (model) dapat mempengaruhi sejumlah orang lain (tampilan) tanpa memerlukan objek yang diubah (model) untuk mengetahui detail lainnya (tampilan).

  • Komposit , yang memungkinkan kita memperlakukan objek grup (tampilan gabungan) seperti kita memperlakukan salah satu objek individualnya (komponen tampilan).

  • Strategi , di mana tampilan menggunakan turunan dari subkelas Pengontrol untuk mengimplementasikan strategi respons tertentu; untuk menerapkan strategi yang berbeda, cukup ganti instance dengan jenis pengontrol yang berbeda.

  • Metode Pabrik , menentukan kelas pengontrol default untuk tampilan.

  • Dekorator , menambahkan scrolling ke tampilan.


Referensi

  • Halaman 4 sampai 6 (Bagian 1.2 Pola Desain di Smalltalk MVC)
  • Halaman 293 hingga 304 (Pola desain pengamat)
  • Halaman 163 hingga 174 (Pola desain komposit)
  • Halaman 315 hingga 324 (Pola desain strategi)
  • Halaman 107 hingga 116 (pola desain Metode Pabrik)
  • Halaman 175 hingga 185 (Pola desain dekorator)

Eric Gamma, Richard Helm, Ralph Johnson, dan John Vlissides. Pola Desain: Elemen Perangkat Lunak Berorientasi Objek yang Dapat Digunakan Kembali . Addison-Wesley, Reading, MA, 1994.

George
sumber
1
Terima kasih, semua jawaban lainnya salah. Ini sama sekali tidak "tergantung dari sudut pandang" dan memiliki selusin atau ratusan suara tidak akan membuat sesuatu yang salah menjadi kenyataan. MVC bukanlah pola desain itu sendiri, ini adalah cara untuk menyusun kode Anda dalam 3 lapisan menggunakan beberapa pola desain yang Anda sebutkan. Semua framework yang mengimplementasikan MVC di belakang layar menggunakan konsep Observable, Strategy, dan composite pattern. Cara terbaik untuk memahami MVC adalah membuat implementasi Anda sendiri dan kemudian Anda akan memahami pola desain di baliknya.
amdev
2

MVC selalu disebutkan dan diperkenalkan sebagai / dalam lapisan presentasi dalam buku arsitektur perangkat lunak.

Baca buku-buku ini:

  1. Merancang Solusi Microsoft.NET untuk Perusahaan (Microsoft Press)

  2. Pola desain ASP.NET profesional (Wrox)

  3. Pola Solusi Enterpise Menggunakan Microsoft.NET (Microsoft press)

  4. Pola Arsitektur Aplikasi Perusahaan (Addison Wesley)

  5. Panduan Praktis untuk Arsitektur Perusahaan (Prentice Hall)

Saleh Rahimzadeh
sumber
6
kenapa 2 jawaban? Anda dapat menambahkan jawaban ini sebagai catatan tambahan untuk jawaban pertama Anda
frogatto
2

Jika Anda menempatkan sepuluh arsitek perangkat lunak ke dalam sebuah ruangan dan meminta mereka mendiskusikan pola Model-View-Controller itu, Anda akan mendapatkan dua belas pendapat yang berbeda. … Beberapa purist di luar sana pasti akan memiliki keraguan dengan apa yang saya sebut sebagai "MVC". Jangan ragu untuk meninggalkan komentar yang menyala-nyala di papan pesan di bagian bawah halaman Web ini. Saya dengan senang hati akan memberikan perspektif yang berbeda tentang apa arti MVC, tetapi perlu diingat bahwa saya tidak peduli.

Josh Smith

Saleh Rahimzadeh
sumber
1

Dan menurut Martin Fowler mereka adalah arsitektur GUI: arsitektur Martin Fowler-GUI

Itu tergantung pada ukuran aplikasi, karena hanya mempengaruhi kelas-kelas terkait GUI, dalam yang kecil (kebanyakan GUI) itu dapat dianggap sebagai pola arsitektur sedangkan dalam yang besar itu hanya akan menjadi pola desain yang Anda terapkan ke GUI kode (bisa 10% dari kode aplikasi).

Iker Jimenez
sumber