Design Pattern - Gang Of Four
Apa yang mendasari GoF membuat buku ini ?
Pattern Language menjadi inspirasi bagi 4 orang ilmuwan IT yang menggeluti dunia Software Engineering oleh yaitu Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, untuk menulis buku Design Pattern : Element of Reusable Object Oriented Software pada tahun 1994. Keempat orang diatas terkenal sebagai Gang of Four (GoF).
Keempatnya berupaya mengkategorisasikan pattern language untuk kasus spesifik yang terjadi berulang di aplikasi. Mereka menyebutnya sebagai Design Pattern.
Mereka tidak menemukan jenis-jenis Design Pattern yang ada didalamnya. Akan tetapi mereka mengumpulkan dan mengkategorisasikan Design Pattern yang sebenarnya sudah ada dan menformulasikannya dalam bentuk yang lebih terstruktur
Apa saja kategorinya ?
1. Creational Design Pattern
2. Structural Design Pattern
3. Behavior Design Pattern
Mari kita bahas ….
1. Creational Design Pattern.
Kelompok ini berkaitan dengan Design Pattern yang isinya mengenai mekanisme membuat objek. Karena ini Design Pattern, maka ada batasan masalah untuk tipe kasus. Misalnya :
- Bagaimana membuat sebuah objek dari daftar objek yang punya kemiripan satu sama lain, dibuat berdasarkan request inputan tertentu.
- Bagaimana membuat sebuah objek yang dipastikan hanya akan ada satu-satunya di aplikasi.
- Bagaimana membuat sebuah objek secara cepat dari objek lain.
Apa ide dasar dalam Creational Design Pattern ini ?
- Menyembunyikan cara membuat objek aslinya, sehingga yang diketahui oleh pengguna hanya inputan berupa masukan sederhana ketika membuat objek.
- Mendelegasikan tugas membuat objek tersebut ke subclass atau yang mengimplementasikan interfacenya.
Ada 5 Creational Design Pattern yang didefinisikan di buku GoF ini :
- Abstract Factory Pattern.
- Factory Method Pattern.
- Builder Pattern.
- Prototype Pattern.
- Singleton Pattern.
(Sabaar, detailnya akan kita bahas di halaman-halaman selanjutnya).
2. Structural Design Pattern.
Design Pattern ini berkaitan dengan bagaimana menyederhanakan struktur yang rumit/besar, terdiri dari banyak class dan object sehingga mudah untuk dikelola dan diatur penggunaan masing-masing komponen dalam struktur itu.
Misalnya :
- Bagaimana mengelola banyak objek yang terlibat dalam sebuah alur proses dan memisahkannya ke dalam sebuah struktur yang spesifik terhadap alur bisnisnya. Misalnya proses checkout di e-commerce terdiri dari banyak objek yang terlibat, diantaranya objek untuk mengecek ketersediaan barang, mengupdate ke database, memanggil daftar kurir yang tersedia, mengecek ketersediaan kode promo, dll. Semua objek itu dikelompokkan dalam sebuah struktur yang mudah diakses oleh client (dalam hal ini bisa FrontEnd, atau service) khusus untuk alur checkout.
- Bagaimana mengelola banyak fitur tampilan yang satu sama lain saling melengkapi (seperti fitur widget).
- Bagaimana mengelola integrasi antara objek internal aplikasi dengan banyak objek extenal yang ingin berkomunikasi dengan aplikasi kita.
Apa ide dasar dalam Structural Design Pattern ini ?
- Menyembunyikan detail struktur yang rumit/besar kepada client, sehingga yang diketahui oleh client hanya inputan berupa masukan sederhana ketika membutuhkan struktur objek tertentu.
- Membuat antarmuka/interface yang umum agar diimplementasikan secara seragam tetapi spesifik terhadap sub struktur nya
Ada 7 Structural Design Pattern yang didefinisikan di buku GoF ini :
- Adapter Pattern.
- Bridge Pattern.
- Composite Pattern.
- Decorator Pattern.
- Facade Pattern.
- Flyweight Pattern.
- Proxy Pattern.
(Sabaar, detailnya juga akan kita bahas di halaman-halaman selanjutnya).
3. Behavior Design Pattern.
Design Pattern ini berkaitan dengan bagaimana mengelola behavior/alur yang rumit/besar, yang terdiri dari banyak fungsi, alur, dan pilihan aksi.
Misalnya :
- Bagaimana mengelola banyak flow untuk aksi tertentu. Misalnya tiap klik button berbeda, maka akan dilakukan proses tertentu.
- Bagaimana mengelola undo/rollback kalau terjadi gagal eksekusi di banyak flow/alur aplikasi.
- Bagaimana mengelola sebuah flow yang terdiri dari banyak step/sub flow.
- Bagaimana mengatur banyak flow/alur yang memiliki beberapa flow yang umum tetapi juga memiliki flow yang khusus.
Apa ide dasar dalam Behaviour Design Pattern ini ?
- Menyembunyikan detail flow yang rumit/besar kepada client, sehingga yang diketahui oleh client hanya nama flow atau identifikasi flow nya saja.
- Membuat antarmuka/interface yang umum agar diimplementasikan secara seragam tetapi spesifik terhadap sub flow nya
Ada 7 Structural Design Pattern yang didefinisikan di buku GoF ini :
- Chain of Responsibility Pattern.
- Command Pattern.
- Interpreter Pattern.
- Iterator Pattern.
- Mediator Pattern.
- Memento Pattern.
- Observer Pattern.
- State Pattern.
- Strategy Pattern.
- Template Method Pattern.
- Visitor Pattern.
(Sabaar - untuk ke tiga kalinya -, detailnya juga akan kita bahas di halaman-halaman selanjutnya).