Manfaat design pattern
Setelah mengetahui penjelasan dari design pattern, sekarang kita akan membahas apa manfaat yang bisa kamu dapatkan ketika menggunakan pola desain ini. Berikut ini adalah beberapa manfaatnya:
Pola desain ini memberikan solusi atas masalah yang timbul saat pengembangan perangkat lunak.
Penulisan kode menjadi lebih rapi, terstruktur, dan lebih mudah dibaca.
Membuat komunikasi antara tim pengembang menjadi lebih efisien.
Macam-macam design pattern
Dalam pola desain, terdapat tiga pola utama yang dapat digunakan. Berikut ini penjelasannya:
Creational Pattern (Pola pembuatan)
Yang pertama adalah creational pattern. Pola ini adalah solusi untuk menyelesaikan masalah yang ditemukan dalam pembuatan suatu instance atau objek. Contoh implementasi dari creational pattern ini adalah saat pengembang ingin membuat sebuah class untuk database yang dapat diakses dari beberapa lokasi. Pattern ini dapat dibagi menjadi lima macam, yaitu:
o Abstract Factory
Pola ini hanya dapat
mendefinisikan interface atau abstract class untuk membuat suatu objek tanpa harus menentukan sub- classnya.
o Builder
Builder adalah creational pattern yang membuat
sebuah objek yang kompleks dari objek yang sederhana menggunakan pendekatan yang dilakukan secara bertahap (step-by-step).
o Factory Method
Factory method menetapkan sebuah interface atau abstract class untuk membuat sebuah objek, tetapi tetap membiarkan subclass untuk mengubah jenis objek yang dibuat. Ia dapat disebut juga dengan Virtual Constructor.
o Prototype
Pola ini memungkinkan kamu untuk menyalin objek menggunakan instance prototype yang ada dengan membuat objek yang baru dan dapat dikustomisasi sesuai dengan kebutuhan tanpa bergantung dengan objek aslinya.
o Singleton
Singleton ini memastikan suatu class hanya memiliki satu instance dan menyediakan global access point ke instance tersebut. Ada dua bentuk pola singleton ini, yaitu Early Instantiation dan Lazy Instantiation.
Behavioral Pattern (Pola perilaku)
Berikutnya behavioral pattern. Ia merupakan pola untuk menyelesaikan masalah yang ditemukan dalam komunikasi antar object. Pattern ini dibagi menjadi 11 macam, yaitu:
o Chain of Responsibility
Pola ini menciptakan sebuah rantai yang saling mengirimkan request. Chain of responsibility ini
memisahkan pengirim dan penerima
berdasarkan request yang dikirim.
o Command
Command ini dapat mengubah request menjadi objek yang dapat berdiri sendiri dan berisi seluruh informasi mengenai request tersebut. Pola ini dikenal juga dengan sebutan Action or Transaction.
o Interpreter
Pola interpreter ini mendefinisikan cara untuk mengevaluasi ekspresi bahasa atau tata bahasa. Pola ini juga dapat digunakan untuk menafsirkan kalimat dalam bahasa tertentu.
o Iterator
Iterator ini dapat digunakan untuk mengakses elemen dari collection object secara berurutan tanpa mengetahui representasi yang mendasarinya (list, stack, tree, dll.). Pola ini dikenal juga dengan sebutan Cursor.
o Mediator
Mediator ini bekerja dengan cara mendefinisikan bagaimana sebuah objek dapat berinteraksi dengan beberapa class atau objek lainnya. Pola mediator ini dapat digunakan untuk mengurangi kompleksitas komunikasi antara beberapa objek atau class.
o Memento
Pola ini dapat digunakan saat kamu ingin mengembalikan keadaan dari suatu objek ke keadaan sebelumnya tanpa melanggar peraturan yang ada. Pola ini berguna saat terjadi kesalahan dan kamu ingin mengembalikan objek ke keadaan semula. Memento ini dikenal juga dengan sebutan Token.
o Observer
Pola ini dapat diartikan sebagai relasi dependensi antara satu dengan banyak objek, sehingga jika ada perubahan status pada objek, seluruh dependensinya akan mengetahuinya secara otomatis. Pola ini dikenal juga dengan sebutan Dependents atau Publish- Subscribe.
o State
Pola state ini digunakan saat objek mengubah perilaku berdasarkan kondisi internalnya. Objek akan muncul dan mengubah status class tersebut. State ini dikenal juga dengan sebutan Objects for States.
o Strategy
Strategy membantu kamu dalam mendefinisikan family algorithm, kemudian mengenkapsulasi masing-masing algoritma ke dalam class yang terpisah dan membuat objek dapat dipertukarkan (objects interchangeable).
Pola ini disebut juga dengan sebutan Policy.
o Template Method
Berikutnya pola template method. Pola ini memungkinkan kamu untuk mendefinisikan kerangka
algoritma ke dalam base class dan
membiarkan subclass mendefinisikan kembali langkah- langkah tertentu dari suatu algoritma tanpa mengubah struktur algoritma.
o Visitor
Pola terakhir adalah visitor. Pola ini memungkinkan kamu untuk menentukan operasi baru tanpa mengubah kelas elemen tempat operasi itu beroperasi.
Structural Pattern (Pola struktural)
Pola terakhir adalah structural pattern. Pola ini digunakan untuk menyelesaikan permasalahan yang ditemukan dalam pengaturan komposisi dari class dan object. Structural pattern ini dapat dianalogikan seperti steker, saat ada steker dengan bentuk yang berbeda mau kamu gunakan, kamu harus menggunakan adapter tambahan sehingga steker dapat sesuai dengan yang kamu inginkan. Pattern ini dibagi ke dalam tujuh macam, yaitu:
o Adapter
Pola pertama adalah adapter. Adapter ini mengubah class interface menjadi interface yang diharapkan oleh client. Pola adaptor ini dikenal dengan sebutan Wrapper.
o Bridge
Selanjutnya bridge. Ia adalah pola yang memungkinkan kamu membagi sebuah class yang berukuran besar menjadi dua hirarki terpisah (yaitu abstraksi dan implementasi) yang dapat dikembangkan secara
independen. Pola ini dapat disebut
dengan Handle atau Body.
o Composite
Composite ini memungkinkan kamu untuk menyusun objek menjadi sebuah structured tree untuk mewakili seluruh bagian dari hierarki objek.
o Decorator
Pola berikutnya adalah decorator. Pola ini memungkinkan kamu untuk mengimplementasikan perilaku baru kedalam suatu objek dengan menempatkan objek ke objek khusus yang bernama wrapper object.
o Facade
Facade ini menyediakan interface yang disederhanakan ke dalam sebuah library atau kumpulan class. Pola ini dapat mendefinisikan interface yang membuat subsistem lebih mudah dimengerti dan digunakan.
Biasanya pola Facade ini digunakan bersama dengan Abstract Factory.
o Flyweight
Berikutnya adalah flyweight. Pola ini digunakan pada saat kamu harus membuat banyak objek, pola ini dapat diimplementasikan untuk mengurangi beban pada memori.
o Proxy
Pola yang terakhir adalah proxy. Pola ini menyediakan tempat pengganti atau placeholder untuk objek lain.