Saya mencoba mendidik kolega saya di bidang pola desain. Beberapa pola Gang of Four asli sedikit esoteris, jadi saya ingin tahu apakah ada sub-kelompok pola "esensial" yang harus diketahui oleh semua programmer. Saat saya melihat daftar, saya pikir saya mungkin telah menggunakan -
- Pabrik Abstrak
- Metode Pabrik
- Singleton
- Jembatan
- Tatapan
- Perintah
Yang mana yang sebenarnya Anda gunakan dalam praktik, dan untuk apa Anda menggunakannya?
design-patterns
Craig Schwarze
sumber
sumber
for, if, while...
dll" - sulit untuk mengukur seberapa tidak ada gunanya itu.Jawaban:
Berikut daftar yang saya gunakan atau lihat dalam praktik:
Singleton - Objek aplikasi dalam ASP.Net menjadi contoh utama dari ini.
Adaptor - Menyambung ke basis data biasanya dapat melibatkan kelas Adaptor setidaknya di area saya. Net stuff.
Factory - General untuk menghasilkan objek meskipun saya melihat ini lebih banyak di beberapa ASP klasik yang lebih tua pada hari itu.
Strategi - Saya memiliki aplikasi yang untuk setiap jenis perangkat saya memiliki struktur yang sama untuk kelas yang saya akan pertimbangkan sebagai implementasi dari pola ini.
Fasad - Dalam beberapa hal ini mirip dengan pola Adaptor dalam hal menjadi sesuatu yang biasanya menyatukan beberapa sistem.
sumber
Para penulis menyusun pola dari desain yang diamati yang mereka temukan dalam aplikasi nyata. Tidak ada satu orang pun yang akan menggunakan semuanya, tetapi semuanya digunakan.
sumber
Dekorator .
EDIT : Di hampir setiap proyek yang melampaui tahap 'sepele', satu berakhir dengan antarmuka IAction (detail mungkin berbeda):
Satu jam berikutnya saya habiskan untuk menulis banyak kelas kecil, hampir sepele yang menerapkan IAction. Ketika digabungkan, mereka sangat kuat dan fleksibel.
Misalnya a
LogAction
(tulis untuk mencatat dan melakukan IAction),NullAction
(tidak melakukan apa pun dan mengembalikan true),ActionList
(melakukan daftar IActions, dan mengembalikan ANDing dari bools). Dalam beberapa kasusAndAction
(mengembalikan DAN-ing dari dua tindakan, bisa hubung pendek atau tidak),OrAction
,NotAction
masuk akal juga.Meskipun secara teknis dari contoh di atas hanya LogAction adalah Dekorator (yang lain tidak beroperasi tepat 1 IAction), saya masih menganggap ini generalisasi dari pola Dekorator ketika saya membuat Daftar Tindakan LogActions of IActions.
sumber
Saya berasumsi Anda bermaksud membatasi pertanyaan untuk penggunaan pola dalam kode / proyek sendiri (tidak ada perpustakaan kelas dan kerangka kerja pihak ke-3).
Seperti yang dilakukan orang lain, saya juga paling sering menggunakan pola Pabrik . Kemudian
sumber
Saya telah menggunakan banyak yang lain yang telah disebutkan (Singleton, Factory, Builder, Command, Strategy, dll ...)
Satu yang belum saya lihat disebutkan adalah Flyweight, yang cenderung saya gunakan banyak. Saya telah memberikan contoh implementasi di bawah ini:
sumber
Sebagian besar pola Gang of Four asli masih digunakan sampai sekarang, tetapi ada yang sekarang populer yang tidak ada dalam buku ini.
Temukan referensi untuk Desain Patters dalam bahasa yang Anda gunakan. Mereka cenderung lebih konkret dan menggunakan fitur bahasa tertentu untuk menerapkan pola dengan cara yang lebih ringkas dan elegan.
Tiga sumber yang bagus untuk Pola Desain:
Buku "Head First Design Patterns" - bahasa pilihan adalah Java, tetapi relevan untuk semua bahasa. dofactory Design Patterns - penjelasan pola desain .net yang hebat dan gratis dengan kode. PluralSight - Design Patterns Library - yang ini berbayar, tetapi terlalu bagus untuk tidak memasukkannya ke dalam daftar.
sumber
Nah jika Anda menggunakan perpustakaan umum seperti ACE, Anda akhirnya menggunakan lebih dari yang Anda pikir Anda gunakan. Saya menggunakan Observer / Observable ekstensif :-)
sumber
Saya menggunakan Builder setidaknya sekali (proses konverter yang sama dapat membangun output HTML atau Excel).
Saya sering menggunakan Metode Templat (untuk tugas yang berhubungan dengan JDBC, atau pengontrol Swing abstrak).
Suatu kali saya harus mengembangkan banyak fitur baru menjadi aplikasi berbasis formulir, yang berantakan. Saya hanya bisa maju setelah saya refactored hal-hal yang ada ke solusi berbasis pola Negara. (Yah, sebagian besar).
Saya juga sering menggunakan Perintah (Aksi Swing), dan Pengamat juga.
Suatu kali saya menggunakan solusi seperti Mememento untuk mendeteksi perubahan dalam bentuk Swing. Bentuk akan membuat cerita bersambung keadaannya apa yang saya bandingkan (sama dengan ()) dengan keadaan sebelumnya.
sumber
Saya percaya saya memiliki sebagian besar dari mereka sepanjang karier saya. satu-satunya yang saya yakin belum saya gunakan adalah Pola Adaptor yang diimplementasikan dengan banyak pewarisan pada buku ini karena saya bukan penggemar berat pewarisan berganda.
sumber
Saya menyukai Dekorator. Satu-satunya yang saya tambahkan ke yang disebutkan adalah Proxy.
sumber