Saat kita membaca tentang pola desain di internet kita perhatikan ada 3 kategori:
- Kreasi
- Struktural
- Perilaku
Namun ketika kita membuat arsitektur sebuah perangkat lunak, maka kita memikirkan MVP, MVC atau MVVM.
Misalnya, di antara pola kreasi saya menemukan pola singleton , tetapi saya juga menggunakan singleton di MPV saya.
Jadi pertanyaan saya adalah: Apakah pola desain merupakan keseluruhan struktur produk?
Jika ya, lalu bagaimana singleton bisa menjadi pola desain? Karena saya bisa menggunakannya di mana saja di aplikasi saya. Pada dasarnya, ini dibatasi hanya untuk membuat satu instance dalam satu waktu di memori, tetapi bukankah konsep ini menentukan bagaimana perangkat lunak dirancang?
Jika tidak, lalu di manakah MVP, MVC, dan MVVM dalam tiga kategori pola? Dan apa perbedaan antara desain dan arsitektur perangkat lunak?
sumber
Jawaban:
Ini membutuhkan penjelasan rinci tetapi saya akan mencoba membuat sketsa perbedaan tersebut sebaik pengetahuan saya.
Pola adalah kesamaan yang Anda temukan dalam program. Ini memungkinkan kita untuk mendekonstruksi struktur kompleks yang besar dan membangun menggunakan bagian-bagian sederhana. Ini memberikan solusi umum untuk kelas masalah.
Perangkat lunak yang besar dan kompleks melewati serangkaian dekonstruksi pada tingkat yang berbeda. Pada tingkat yang lebih besar, pola arsitektur adalah alatnya. Pada level yang lebih kecil, pola desain adalah alatnya dan pada level implementasi, paradigma pemrograman adalah alatnya.
Suatu pola dapat terjadi pada tingkat yang sangat berbeda. Lihat Fraktal . Pengurutan cepat, Pengurutan gabungan adalah semua pola algoritmik untuk mengatur sekelompok elemen dalam urutan.
Untuk tampilan yang paling sederhana:
Idiom adalah teknik pemrograman khusus paradigma dan bahasa yang mengisi detail tingkat rendah.
Pola desain biasanya dikaitkan dengan kesamaan level kode. Ini menyediakan berbagai skema untuk menyempurnakan dan membangun subsistem yang lebih kecil. Biasanya dipengaruhi oleh bahasa pemrograman. Beberapa pola menjadi tidak penting karena paradigma bahasa . Pola desain adalah taktik skala menengah yang menyempurnakan beberapa struktur dan perilaku entitas dan hubungannya.
Sedangkan pola arsitektur dipandang sebagai kesamaan pada tingkat yang lebih tinggi daripada pola desain. Pola arsitektur adalah strategi tingkat tinggi yang menyangkut komponen skala besar, properti global, dan mekanisme sistem.
Bagaimana pola diperoleh? Melalui:
Jika Anda telah mengikuti pemikiran yang diletakkan di atas. Anda akan melihat bahwa Singleton adalah "pola desain" sedangkan MVC adalah salah satu pola "arsitektural" untuk menangani pemisahan perhatian.
Cobalah membaca:
sumber
Pola Desain adalah pola terkenal untuk memecahkan masalah teknis dengan cara yang telah terbukti berkali-kali. Pola desain adalah struktur dan praktik desain umum yang membuat perangkat lunak Berorientasi Objek dapat digunakan kembali. Contoh pola desain adalah Factory Pattern, Singleton, Facade, State, dll. Pola desain dapat digunakan untuk memecahkan masalah yang lebih kecil di seluruh aplikasi, dan lebih mudah untuk dimasukkan, diubah, ditambahkan daripada keseluruhan arsitektur
pola arsitektur adalah pola yang terkenal untuk memecahkan masalah arsitektur aplikasi perangkat lunak. Arsitektur aplikasi perangkat lunak adalah proses menentukan solusi terstruktur yang memenuhi semua persyaratan teknis dan operasional. Arsitektur aplikasi adalah keseluruhan 'organisasi' kode. Contoh Arsitektur yang berbeda mungkin MVC, MVVM, MVP, n-layer (yaitu UI-BLL-DAL), dll. Arsitektur biasanya perlu diputuskan di awal dan seringkali sulit untuk diubah setelah aplikasi dibangun.
sumber
Unsur arsitektur cenderung ke arah kumpulan kelas atau modul, umumnya direpresentasikan sebagai kotak. Diagram tentang arsitektur merepresentasikan level tertinggi yang melihat ke bawah, sedangkan diagram kelas berada pada level yang paling atomic. Tujuan dari pola arsitektur adalah untuk memahami bagaimana bagian-bagian utama sistem cocok satu sama lain, bagaimana pesan dan data mengalir melalui sistem, dan masalah struktural lainnya. Pola arsitektur menggunakan berbagai jenis komponen, masing-masing biasanya terdiri dari modul yang lebih kecil. Setiap komponen memiliki tanggung jawab dalam arsitektur. Pola desain adalah pola desain tingkat rendah atau tingkat kelas untuk partikel aplikasi yang lebih kecil.
Untuk informasi lebih lanjut: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns
sumber
Nah, untuk bagian utamanya adalah soal bahasa. Menurut pengalaman saya, batas antara desain dan arsitektur, menurut perangkat lunak, adalah sungai yang luas dengan lebarnya yang dihasilkan dari ketinggian air yang pada gilirannya terutama dipengaruhi oleh musim pemasaran. Umumnya istilah "desain" digunakan dengan aspek yang kuat dari perilaku produk perangkat lunak yang diakui oleh pengguna akhir, sedangkan "arsitektur" adalah singkatan dari struktur teknis perangkat lunak, yaitu komponen, perpustakaan, protokol, dan apa pun yang diperlukan untuk memenuhi rancangan. "Pola desain" mengambil dua peran: pertama dianggap sebagai praktik terbaik untuk menyelesaikan kategori masalah standar (lebih atau kurang), bukan produk; Kedua, mereka membantu para pengembang untuk berkomunikasi. Tetap dengan teladan Singleton Anda, ini memungkinkan kita untuk mengetahui tentang mekanisme hanya dengan menggunakan kata, alih-alih menjelaskan setiap saat, bahwa kita membuat satu instance dengan menggunakan ruang data yang ditentukan (variabel atau apa pun) yang diatur secara terkontrol dan dijamin akan satu-satunya, karena kami melindungi konstruktor kelas dll. Jadi IMHO jawaban singkat untuk pertanyaan Anda adalah: Itu tergantung pada siapa yang berbicara. Apakah itu masuk akal?
sumber
Pola Desain berbeda dengan Pola Arsitektur dalam cakupannya, lebih dilokalkan, berdampak lebih kecil pada basis kode, berdampak pada bagian tertentu dari basis kode, misalnya:
Pola Arsitektur memiliki dampak yang luas pada basis kode, paling sering berdampak pada keseluruhan aplikasi baik secara horizontal (yaitu bagaimana menyusun kode di dalam lapisan) atau secara vertikal (yaitu bagaimana permintaan diproses dari lapisan luar menjadi lapisan dalam dan kembali). Contoh Pola Arsitektur: Model-View-Controller, Model-View-ViewModel
sumber