Minggu 2
Sesi 4
OUTLINE MATERI :
• Design Pattern
Menurut Christopher Alexander , "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, in such
a way that you can use this solution a million times over, without ever doing it the same way twice"
[AIS+77]. “Setiap pola mendeskripsikan sebuah permasalahan yang terus muncul dalam
lingkungan kita, dan kemudian mendeskripsikan inti solusi dari permasalahan tersebut sedemikian
rupa sehingga kita bisa menggunakan solusi ini sejuta kali tanpa harus melakukannya dengan cara
yang sama dua kali”.
Design Pattern adalah sebuah istilah dalam Rekayasa Perangkat Lunak yang mengacu kepada
solusi umum yang dapat digunakan secara berulang kali untuk menyelesaikan masalah-masalah
umum yang ditemukan dalam disain perangkat lunak. Sebuah design pattern tidak berbentuk solusi
akhir yang dapat langsung diterjemahkan menjadi kode program.
Design pattern merupakan penjelasan atau template yang menunjukkan bagaimana cara
menyelesaikan sebuah masalah yang kemudian dapat digunakan di berbagai situasi yang berbeda-
beda. Design pattern untuk object-oriented biasanya menunjukkan relasi dan interaksi antar kelas
dan objek, tanpa menjelaskan kelas dan objek akhir yang terlibat dalam sebuah aplikasi. Algoritma
biasanya tidak disebut sebagai design pattern, karena algoritma akan menjadi solusi masalah
komputasi dan bukan masalah disain.
• Model VS pattern
Umumnya kita lebih mengenal Model daripada Pattern. Itu disebabkan Model adalah konsep
yang sudah matang, dan dipelajari di banyak tempat. Kita mengenal pesawat model, yaitu pesawat
dalam bentuk yang lebih kecil daripada ukuran sebenarnya. Ketika kontraktor ingin membangun
sebuah gedung, dia membuat model gedung dalam ukuran kecil, sehingga para investor bisa
mendapatkan gambaran tentang gedung yang ingin dibangun.
Model adalah abstraksi dari realitas. Realitas di dunia dalam pandangan pertama terlihat seperti
chaos, tak teratur. Model memfilter bagian-bagian yang tidak diperlukan untuk memperlihatkan
kerangka bagian utama, dan menjadikannya sebagai pengganti dari realitas tersebut untuk diamati
atau dimengerti.
• Framework vs Pattern
Fremework adalah sekumpulan fungsi, class, dan aturan-aturan. Berbeda dengan library yang
sifatnya untuk tujuan tertentu saja, framework bersifat menyeluruh mengatur bagaimana kita
membangun aplikasi. Framework memungkinkan kita membangun aplikasi dengan lebih cepat
karena sebagai developer kita akan lebih memfokuskan pada pokok permasalahan sedangkan hal-
hal penunjang lainnya seperti koneksi database, form validation, GUI, dan security; umumnya
telah disediakan oleh framework. Disamping itu dengan aturan-aturan yang jelas dan harus
dipatuhi, aplikasi kita lebih solid, more readable, dan kolabarasi dalam tim dapat lebih mudah
dilaksanakan.
Pattern adalah solusi umum yang dapat digunakan kembali pada permasalahan umum yang
sering terjadi pada software design. Design pattern bukan desain final yang dapat
ditransformasikan secara langsung kedalam kode. Ini hanyalah deskripsi atau template untuk
mengetahui bagaimana menyelesaikan permasalahan yang dapat digunakan pada berbagai macam
situasi yang berbeda. Design pattern dari object-oriented secara tipikal menunjukkan hubungan
dan interaksi antara kelas dan objek tanpa menspesifikasikan kelas atau objek dari aplikasi final
yang terlibat didalamnya
Ada banyak Design Patterns yang sudah diakui kemampuannya, diterima dan diaplikasikan
oleh banyak praktisi. Design Patterns yang cukup populer adalah yang diperkenalkan The Gang of
Four (GoF) - Erich Gamma, Richard Helm, Ralph Johnson dan John Vlissides. Dalam The Gang
of Four (GoF) terdapat 23 Pattern yang dibagi menjadi 3 kelompok besar, sebagai berikut :
Secara singkatnya, design pattern adalah best practice pola-pola desain kelas pada perancangan
berorientasi objek. Dengan mengaplikasikan design pattern ini, desain sebuah aplikasi dapat
menjadi dinamis terhadap perubahan.
Dari ketiga kelompok besar design pattern tersebut memiliki bagian2 seperti berikut
• Creational Pattern
1. Abstract Factory (Pembuatan Instance Object dari keluarga object (Children Object))
3. Factory Method (Pembuatan Objet tanpa spesifikasi penjabaran class yang akan di buat)
Design pattern ini memisahkan kode untuk membuat objek, sehingga ketika jenis objek
yang dapat dibuat bertambah, kode yang berubah hanya kode pembuatan objeknya saja.
4. Prototype ( Pembuatan object dengan mengkloning dari object yang telah ada)
Kelas yang hanya dapat diinstansiasi menjadi 1 objek. Setiap yang membutuhkan layanan kelas
ini akan mendapatkan instans objek yang sama. Kelas ini memiliki konstruktor yang hak aksesnya
adalah private (atau protected dalam beberapa kasus). Konstruktor hanya dapat dipanggil dari
dalam kelas. Objek lain yang membutuhkan kelas ini dapat meminta instans kelas dengan
memanggil method statik GetInstance.
• Structural Pattern
1. Adapter (Pattern ini Membolehkan class yang interfacenya tidak compatible untuk bekerja
bersama, dengan cara membungkusnya menjadi interface dari class yang telah ada). Pattern
untuk menyesuaikan interface dari sebuah kelas menjadi interface yang lain.
3. Composite (Pattern ini Menggabungkan satu atau lebih object yang serupa sehingga dapat
dijadikan satu object)
4. Decorator (Pattern yang memberikan cara yang dinamis untuk menambahkan dan meng-
override prilaku dari method yang ada dalam sebuah object)
6. Flyweight ( Pattern ini berupaya untuk mengurangi pembuatan dan manipulasi dari
sejumlah object besar yang serupa)
7. Proxy (Pattern yang menyediakan tempat untuk objek-object mengakases controll dari
aplikasi, dimana dapat mengurangi biaya dan mengurangi kompleksitas)
• Behavior Patterns
5. Mediator ( Memberikan pola untuk 'loose coupling' antara class dengan cara menjadikanya
satu kelas yang mempaparkan detail dari method).
8. State ( Memungkinkan object untuk mengubah prilaku ketika terjadi perubahan internal. )
10. Template Method ( Mendefinisikan kerangka operasi algoritma dalam sebuah abstract
class. Metode template ini memungkinkan subclass mendefinisikan langkah tertentu dari
sebuah algoritma tanpa mengubah struktur algoritma)
11. Visitor ( Memisahkan algoritma dari struktur object dengan memindahkan hirarki dari
methods ke dalam satu object).
Selain design pattern yang disebutkan di atas, masih banyak lagi design pattern lainnya
yang tidak sepopuler design pattern-design pattern di atas.
• Design Pattern adalah sebuah istilah dalam Rekayasa Perangkat Lunak yang mengacu kepada
solusi umum yang dapat digunakan secara berulang kali untuk menyelesaikan masalah-
masalah umum yang ditemukan dalam disain perangkat lunak.
• Baik Model maupun Pattern, punya satu tujuan utama, yaitu mengatasi kompleksitas masalah.
Model mengatasi kompleksitas masalah dengan memfilter hal-hal yang tidak signifikan untuk
mendapatkan bagian yang terpenting yang bisa direpresentasikan. Sedangkan Pattern
mengatasi kompleksitas dengan mendapatkan repetisi / pengulangan dari pola-pola dasar.
• GoF mendefinisikan 23 ragam design pattern yang dikelompokkan menjadi 3 tipe yakni
creational, structural dan behavioral
1. William Sanders. (2013). “Learning PHP Design Patterns”. O’Reilly Media, New York. ISBN :
9781449344917
3. http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
4. https://www.tutorialspoint.com/php/php_design_patterns.htm