Design patterns adalah unsur-unsur rancangan yang seringkali muncul pada berbagai sistem yang berbeda. Setiap kemunculan ini menguji pattern tersebut di berbagai situasi. Semakin terujinya suatu unsur rancangan berarti semakin matangnya unsur tersebut sehingga beberapa dapat dikatakan sebagai best practices dalam perancangan sistem.
Istilah
design patterns dimulai di bidang perancangan bangunan oleh Christopher
Alexander. Dalam bukunya A Pattern Language, ia menerangkan pola-pola yang
terdapat di dalam berbagai rancangan arsitektur bangunan. Arti design
patternditerangkannya dalam kalimat berikut:
“Each
pattern describes a problem which occurs over and over again in our
environment, and then describes the core of the solution to that problem,
insuch a way that you can use this solution a million times over, without
everdoing it the same way twice.”
Pada Gang of
Four Patterns, katalog design patterns bisa dikategorikan menjadi tiga yaitu
creational, structural, dan behavioral. Creational patterns berhubungan dengan
penciptaan obyek. Pola-pola ini berkisar seputar obyek mana yang diciptakan,
siapa yang menciptakannya, serta berapa banyak obyek diciptakan. Structural
patterns berhubungan dengan struktur statis obyek dan kelas. Pola-pola dalam
structural patterns dapat dilihat pada saat program di-compile melalui struktur
inheritance, properties, serta agregasi obyek-obyek. Behavioral patterns lebih
berkenaan terhadap perilaku run-time program. Pola-pola ini berkaitan dengan
algoritma serta interaksi antar obyek saat program berjalan. Penekanan behavioral patterns lebih pada komposisi obyek ketimbang inheritance. Secara umum membahasan tentang
design pattern dapat dijelaskan dengan bagaimana suatu design pattern akan
digunakan yaitu:
1. Name yaitu
merupakan nama yang diberikan pada pola ini.
2. Intent yaitu
merupakan pernyataan ringkas yang memberikan permasalahan yang terjadi serta
maksud yang hendak dicapai.
3. Also Known
As, Berbagai alias untuk pola ini, jika ada.
4. Motivation,
Sebuah skenario yang menerangkan sebuah permasalahan rancangan dan bagaimana
pola ini dapat memecahkannya.
5. Applicability
yaitu Berbagai situasi di mana pola ini dapat diterapkan.
6. Structure
yaitu Sebuah gambar yang menerangkan hubungan kelas dan obyek dalam pattern
ini.
7. Participants
yaitu Berbagai kelas dan/atau obyek yang turut serta dalam pola ini beserta
peranannya.
8. Collaborations
yaitu Bagaimana kerja sama dari para peserta untuk melaksanakan peranannya
masing-masing.
9. Consequences
yaitu Bagaimana pola ini mencapai tujuannya serta kompromi (tradeoff) yang
harus dilakukan dalam penerapannya.
10. Implementation
yaitu Petunjuk, peringatan, serta berbagai teknik yang digunakan dalam
penerapan pola ini.
11. Sample Code
yaitu Contoh program yang mengilustrasikan penerapan pola ini.
12. Known Uses –yaitu
Contoh-contoh dari penggunaan pola ini pada sebuah system sungguhan.
13. Related
Patterns yaitu Pola-pola lain yang berhubungan dengan pola ini
Lalu
ada dasar-dasar untuk membuat design pattern diantaranya adalah:
1. Creational
Patterns
Abstract Factory = Menciptakan sebuah contoh dari beberapa keluarga kelas
Builder = Memisahkan konstruksi objek dari representasinya
Factory Method = Membuat sebuah instance dari beberapa kelas turunan
Prototype = Sebuah contoh sepenuhnya diinisialisasi untuk disalin atau kloning
Singleton = Sebuah kelas yang hanya satu contoh bisa eksis
Abstract Factory = Menciptakan sebuah contoh dari beberapa keluarga kelas
Builder = Memisahkan konstruksi objek dari representasinya
Factory Method = Membuat sebuah instance dari beberapa kelas turunan
Prototype = Sebuah contoh sepenuhnya diinisialisasi untuk disalin atau kloning
Singleton = Sebuah kelas yang hanya satu contoh bisa eksis
2. Structural
Patterns
Adapter = Pertandingan kelas yang berbeda
Bridge = Memisahkan antarmuka obyek dari pelaksanaannya
Composite = Struktur pohon obyek sederhana dan komposit
Decorator = Tambahkan tanggung jawab ke objek dinamis
Facade = Bangunan kelas tunggal yang mewakili seluruh subsistem
Flyweight = Sebuah contoh halus digunakan untuk berbagi efisien
Proxy = Sebuah benda yang mewakili benda lain
Adapter = Pertandingan kelas yang berbeda
Bridge = Memisahkan antarmuka obyek dari pelaksanaannya
Composite = Struktur pohon obyek sederhana dan komposit
Decorator = Tambahkan tanggung jawab ke objek dinamis
Facade = Bangunan kelas tunggal yang mewakili seluruh subsistem
Flyweight = Sebuah contoh halus digunakan untuk berbagi efisien
Proxy = Sebuah benda yang mewakili benda lain
3. Behavioral
Pattern
Chain of Resp = Sebuah cara melewati permintaan antara rantai objek
Command = permintaan perintah sebagai obyek
Interpreter = Sebuah cara untuk memasukkan unsur-unsur bahasa dalam sebuah program
Iterator = Berurutan mengakses elemen dari koleksi
Mediator = Mendefinisikan komunikasi sederhana antara kelas
Memento = Mengambil dan memulihkan keadaan internal obyek
Observer = Sebuah cara memberitahukan perubahan sejumlah kelas
State = perilaku obyek ketika perubahan keadaan
Strategy = Mengenkapsulasi algoritma dalam kelas
Template Method = Menunda langkah-langkah yang tepat dari sebuah algoritma untuk subclass
Visitor = Mendefinisikan operasi baru untuk kelas tanpa perubahan
Chain of Resp = Sebuah cara melewati permintaan antara rantai objek
Command = permintaan perintah sebagai obyek
Interpreter = Sebuah cara untuk memasukkan unsur-unsur bahasa dalam sebuah program
Iterator = Berurutan mengakses elemen dari koleksi
Mediator = Mendefinisikan komunikasi sederhana antara kelas
Memento = Mengambil dan memulihkan keadaan internal obyek
Observer = Sebuah cara memberitahukan perubahan sejumlah kelas
State = perilaku obyek ketika perubahan keadaan
Strategy = Mengenkapsulasi algoritma dalam kelas
Template Method = Menunda langkah-langkah yang tepat dari sebuah algoritma untuk subclass
Visitor = Mendefinisikan operasi baru untuk kelas tanpa perubahan
Tidak ada komentar:
Posting Komentar