Kenalan dengan Design Pattern

Alif I. Hazairin
3 min readJun 14, 2022

--

src: https://www.zilliondesigns.com/blog/wp-content/uploads/Pattern-Logos.jpg

Walaupun bahasan kita kali ini tidak ada hubungannya dengan ilustrasi di atas, namun tetap ada kesamaan antara design pattern di atas dengan design pattern pada programming. Kesamaannya adalah, keduanya sama-sama pola yang applicable pada kasus-kasus penggunaan tertentu, dan dapat digunakan berulang.

(Untuk selanjutnya, design pattern akan merujuk pada design pattern pada programming.)

Intro to Design Pattern

Kemunculan design pattern dilatarbelakangi munculnya masalah-masalah Object-Oriented Programming (OOP) yang umum dan berulang kali terjadi. Masalah-masalah tersebut sebenarnya sudah terselesaikan. Namun karena sering munculnya masalah dengan kasus yang mirip pada objek yang berbeda-beda, penyelesaian pada satu kasus dimodifikasi sedemikian rupa agar fit dengan masalah yang baru.

Kasus-kasus serupa terus bermunculan, solusi dengan pola yang sama terus digunakan. Keumuman (commonness) pasangan masalah-solusi tersebut, menginspirasi Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm untuk merangkum seluruh pola masalah-solusi tersebut dan mempublikasikannya melalui sebuah buku berjudul Design Patterns: Elements of Reusable Object-Oriented Software pada tahun 1994. Sejak saat itu, konsep design pattern mulai dikenal secara umum.

Kemunculan konsep “design pattern” berangkat dari hal yang konkrit ke hal yang abstrak. Masalah-masalah yang mirip, diselesaikan dengan solusi dengan pola yang sama. Keumuman masalah yang dihadapi melahirkan sebuah solusi yang reusable sehingga solusi yang ada dapat digeneralisasi menjadi konsep pola (pattern) tertentu. Dari situlah, Design Pattern mendapatkan definisinya sendiri, yaitu solusi khusus untuk problem-problem yang umum dalam software design.

Tipe-tipe Design Pattern

Dari total 23 pattern yang dirangkum oleh The Gang of Four (4 orang yang membuat buku design pattern sebelumnya), semuanya dapat dibagi ke dalam tiga tipe, yaitu Creational, Behavioral, dan Structural.

Creational

Creational Design Pattern berurusan dalam mekanisme pembuatan (creation) suatu objek. Design Pattern ini dibutuhkan di kala pembuatan suatu objek harus memenuhi kondisi-kondisi tertentu, atau harus dengan mekanisme tertentu. Beberapa contohnya adalah: Factory Method Pattern, Abstract Factory Pattern, Builder Pattern, Prototyp Pattern, dan Singleton Pattern.

Behavioral

Behavioral Design Pattern adalah pattern yang berfokus pada algoritma serta karakteristik atau responsibility yang dimiliki suatu objek. Behavioral design pattern adalah pattern yang paling banyak jenisnya. Contoh behavioral design pattern adalah: Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method dan Visitor Pattern.

Structural

Structural Design Pattern adalah design pattern yang berurusan dengan susunan objek dan cara penyusunannya. Pattern ini berusaha untuk menyatukan/menyusun beberapa objek yang berbeda ke dalam suatu struktur yang lebih besar, tapi tetap mempertahankan flexibility dan maintainability. Beberapa di antaranya adalah: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, dan Proxy.

Pada web sourcemaking.com terdapat beberapa pattern tambahan yaitu seperti Object Pool Pattern untuk tipe Creational, Interpreter dan Null Object Pattern untuk tipe Behavioral, serta Private Class Data untuk tipe Structural.

Begitulah penjelasan singkat tentang Design Pattern. Artikel ini tidak akan menjelaskan satu per satu bagaimana design pattern tersebut bekerja 😅. Masih banyak pula yang bisa digali dari design pattern. Untuk bacaan lebih lanjut, ada dua web recommended dan saling melengkapi soal design pattern ini.

--

--