Anda di halaman 1dari 10

LECTURE NOTES

Framework Layer Architecture

Minggu 2
Sesi 4

Pengenalan design pattern

COMP6287 - Framework Layer Architecture


LEARNING OUTCOMES

• Peserta diharapkan mampu merancang solusi berorientasi objek dengan


mengimplementasikan design pattern

OUTLINE MATERI :

1. Prinsip dasar design pattern

2. Design pattern sebagai jalan pintas

3. Memilih design pattern

COMP6287 - Framework Layer Architecture


ISI 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.

COMP6287 - Framework Layer Architecture


Pola atau pattern itu terutama bukan abstraksi dari realitas. Pattern lebih mengacu pada
pengalaman (experience) berrealitas. Pengalaman memperlihatkan adanya repetisi dari realitas.
Suatu pattern selalu berulang (kalau tidak berulang, maka tidak lagi dinamakan sebagai pattern).
Dari pengalaman seorang tukang jahit, dia bisa mendapatkan bahwa pola-pola baju pelanggannya
mempunyai bagian yang sering berulang. Dari pengalaman itu, dia bisa membuat pola standar, dan
kemudian pola ini baru disesuaikan ke badan setiap orang (customization). Setiap benda di dunia
ini, jika dipotong terus menerus menjadi kecil-kecil, dan akan sampai saatnya ketika benda itu
tidak bisa lagi dipotong tanpa menjadikan bagian-bagian potongan menjadi bahan lain. Bagian
terkecil itu kita sebut molekul. Setiap molekul dengan molekul lain membuat pola yang terus
menerus berulang, dan dengan kemudian membuat benda dalam ukuran besar, dan pada akhirnya
membentuk jagad raya. Kita melihat jagad raya begitu luas dan kompleks, tetapi sebenarnya semua
itu hanyalah pengulangan pola-pola dari molekul-molekul sederhana.

• 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

• GoF Design pattern

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 :

COMP6287 - Framework Layer Architecture


• Creational Patterns (cara class/object di-inisiasi).

1. Abstract Factory (Creates an instance of several families of classes)

2. Builder (Separates object construction from its representation)

3. Factory Method (Creates an instance of several derived classes)

4. Prototype (A fully initialized instance to be copied or cloned)

5. Singleton (A class of which only a single instance can exist)

• Structural Patterns (struktur/relasi antar object/class)

1. Adapter (Match interfaces of different classes)

2. Bridge (Separates an object’s interface from its implementation)

3. Composite (A tree structure of simple and composite objects)

4. Decorator (Add responsibilities to objects dynamically)

5. Facade (A single class that represents an entire subsystem)

6. Flyweight (A fine-grained instance used for efficient sharing)

7. Proxy (An object representing another object)

• Behavioral Patterns (tingkah laku atau fungsi dari class/object.)

1. Chain of Responbility (A way of passing a request between a chain of objects)

2. Command (Encapsulate a command request as an object)

3. Interpreter (A way to include language elements in a program)

4. Iterator (Sequentially access the elements of a collection)

5. Mediator (Defines simplified communication between classes)

6. Mementto (Capture and restore an object's internal state)

7. Observer (A way of notifying change to a number of classes)

8. State (Alter an object's behavior when its state changes)

COMP6287 - Framework Layer Architecture


9. Strategy (Encapsulates an algorithm inside a class)

10. Template Method (Defer the exact steps of an algorithm to a subclass)

11. Visitor (Defines a new operation to a class without change)

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.

Berikut ini beberapa contoh design pattern yang umum digunakan:

Dari ketiga kelompok besar design pattern tersebut memiliki bagian2 seperti berikut

• Creational Pattern

1. Abstract Factory (Pembuatan Instance Object dari keluarga object (Children Object))

2. Builder (Kontruksi Object yang kompleks dengan memisahkan kontruksinya dan


penjabaran object tersebut)

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)

5. Singleton ( Pembatasan pembuatan object dari suatu class)

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.

COMP6287 - Framework Layer Architecture


2. Bridge ( Pattern ini Memisahkan abstraksi dari implementasinya sehingga dapat
memberikan variasi class secara independent)

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)

5. Facade (Pattern yang menyediakan interface sederhana yang akan di implementasikan


dengan coding yang besar) Pattern ini biasanya untuk memisahkan kode rumit.

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

1. Chain of responsibility ( Pattern yang mendelegasikan perintah untuk rantai pengolahan


objek )

2. Command ( Menciptakan objects yang dikemas dengan beberapa pilihan/action dan


parameter )

3. Interpreter ( Pattern yang digunakan untuk spesifik bahasa )

4. Iterator ( Mengakses element dari object secara berurutan tanpa memaparkan


representasinya )

5. Mediator ( Memberikan pola untuk 'loose coupling' antara class dengan cara menjadikanya
satu kelas yang mempaparkan detail dari method).

6. Memento ( Tanpa melanggar konsep enkapsulasi. Merekam dan mengektrasi keadaaan


internal object dimana memungkinkan mengembalikan keadaannya ke semula nanti.)

7. Observer ( Mendefinisikan dependency one-to-many antara object, dimana perubahan


terjadi pada satu object yang nantinya akan mengenai object turunannya secara otomatis ).

COMP6287 - Framework Layer Architecture


Mempertegas ketergantungan hubungan one to many antara objek-objek agar ketika satu
ojek merubah keadaan (status), maka semua objek yang memiliki ketergantungan
melaporkan dan meng-update secara otomatis.

8. State ( Memungkinkan object untuk mengubah prilaku ketika terjadi perubahan internal. )

9. Strategy (Menentukan sebuah keluarga algoritma, merangkumnya dan membuat mereka


bisa saling di pertukarkan. Pattern ini memberikan algoritma yang bervariasi secara
independent bisa digunakan). Berguna untuk memecah algoritma menjadi bagian-bagian
kecil, yang dapat diganti dengan mudah.

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.

COMP6287 - Framework Layer Architecture


KESIMPULAN

• 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.

• Framework adalah sekumpulan fungsi, class, dan aturan-aturan

• GoF mendefinisikan 23 ragam design pattern yang dikelompokkan menjadi 3 tipe yakni
creational, structural dan behavioral

COMP6287 - Framework Layer Architecture


DAFTAR PUSTAKA

1. William Sanders. (2013). “Learning PHP Design Patterns”. O’Reilly Media, New York. ISBN :
9781449344917

2. http://alexbudiyanto.web.id/2006/07/30/introducing-to-design-pattern.html, Introducing To Design


Pattern, Software Enginering Alex Budiyanto

3. http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
4. https://www.tutorialspoint.com/php/php_design_patterns.htm

COMP6287 - Framework Layer Architecture

Anda mungkin juga menyukai