Anda di halaman 1dari 10

Design Pattern

Melwin Syafrizal, S.Kom


Abstract
Design Pattern dalam Rekayasa Perangkat Lunak dan Object
Oriented Programming merupakan sebuah solusi terhadap
masalah pemrograman umum yang sering dihadapi serta
berulang kali. Pattern adalah bagaimana mendesain class dan
bagaimana interaksi yang terjadi antar class tersebut sehingga
class yang kita bangun bisa lebih elegan dan reusable (dapat
dipakai berulang-ulang).
Pendahuluan
What is a Design Pattern?
Christopher le!ander says" #$ach pattern describes a problem %hich
occurs o&er and o&er again in our en&ironment" and then describes the core
o' the solution to that problem" in such a %ay that you can use this solution a
million times o&er" %ithout e&er doing it the same %ay t%ice# ()*+,,-.
Setiap pola mendeskripsikan sebuah permasalahan yang terus muncul
dalam lingkungan kita, dan kemudian mendeskripsikan inti solusi dari
permasalahan tersebut sedemikian rupa sehingga Anda bisa menggunakan
solusi ini sejuta kali tanpa harus melakukannya dengan cara yang sama dua
kali.
1
Design Pattern adalah sebuah istilah !"nglish# dalam $ekayasa %erangkat
&unak !Software "ngineering# 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 dan Pola Rancang
(agaimana cara seseorang mengolah informasi dalam otaknya) (agaimana
cara Anda membaca tulisan ini) (ahasa *ndonesia dibaca dengan cara
dieja. +uruf ( dan A, dibaca ,(A,, huruf - dan A, dibaca -A, demikian
seterusnya. -oba kita lihat kata ,bahasa,. Apakah otak Kita sewaktu melihat
kata ,bahasa, akan mengeja keenam huruf tersebut baru kemudian bisa
diambil kesimpulan, bahwa keenam huruf b'a'h'a's'a itu harus dibaca
sebagai ,bahasa,. Kita yang sudah terbiasa membaca, mengenali kata
,bahasa, dari bentuk, bukan dieja, kecuali untuk anak'anak sekolah dasar
tingkat awal.
.ika otak harus mengeja setiap kata yang dibaca, betapa meletihkan
pekerjaan tersebut. /etapi otak tidak menggunakan cara yang melelahkan
tersebut, melainkan dengan cara mencocokkan pola !pattern matching#.
/iap kata digabungkan hingga menjadi kalimat yang dapat dipahami karena
memberi makna, sehingga sejumlah perkataan dalam bahasa yang cuma
ada beberapa puluh ribu kata, tidak sulit bagi seseorang untuk
mengumpulkan pola'pola dalam otaknya. -ara yang sama juga dilakukan
oleh pembaca huruf kanji /ionghoa, yang mempunyai puluhan ribu bentuk
berbeda. Seseorang mampu mengenali ribuan jenis huruf kanji yang
berbeda itu bukanlah keajaiban, tetapi merupakan kemampuan dasar dari
otak manusia. 0mumnya setiap orang akan mampu melakukannya jika
memang berniat mempelajarinya.
2
%engenalan pola memungkinkan otak manusia untuk menangani banyak
sekali masukan dari alat indera kita. /anpa pengenalan pola, manusia
lumpuh. "dward de (ono meneliti tentang mekanisme berpikir dan
menyimpulkan bahwa
1
2 #)' the brain %ere not a pattern-making system" %e
%ould not be able to read" %rite" or talk. $&ery acti&ity" like getting dressed in
the morning" %ould be a major time consuming task. *port %ould be
impossible - 'or e!ample" a gol'er %ould ha&e consciously to direct e&ery
part o' e&ery s%ing...# 3 .ika otak bukan sistem pemetaan pola, kita tidak
akan mampu untuk membaca, menulis atau berbicara. Setiap kegiatan
seperti berpakaian di pagi hari, akan menjadi kegiatan yang berat dan
melelahkan. Sport tidak mungkin dilakukan, misalnya, seorang pemain golf
harus dengan sadar menghitung setiap ayunan yang dia lakukan.
Kali ini kita tidak akan membicarakan mekanisme berpikir lebih lanjut, tetapi
contoh penggunaan pola dalam mekanisme berpikir merupakan sebuah
contoh yang bagus untuk memperlihatkan bagaimana cara pengenalan pola
memungkinkan effisiensi di bidang lain.
Salah satu dorongan terbesar pada perkembangan teknologi informasi
dalam dua dekade terakhir tahun terakhir ini, adalah implementasi dari cara
pemrograman berbasis pola. Secara luas, sistem semikian mendasarkan
pada (ahasa %ola !Pattern Language#. *mplementasi %attern &anguage
bukan sekedar pada cara pengembangan produk, tetapi juga sudah masuk
dalam spesifikasi produk itu sendiri sendiri.
4alaupun teknologi informasi dan electical engineering saat kini merupakan
bidang'bidang yang paling banyak menggunakan dasar pemikiran berbasis
pola, tetapi yang pertama kali merumuskannya secara komprehensif bukan
seseorang yang berasal dari latar belakang teknologi informasi atau
enjinering elektrical, tetapi seorang arsitek bangunan yang merancang
pembangunan kota. 5amanya -hristopher Ale6ander. (ersama dengan
rekan'rekannya, dia menulis buku yang ternama dan menjadi karya klasik di
bidang arsitektur, dan digunakan dalam banyak bidang lain, yaitu , Pattern
Language, pada tahun 1788
9
.
1
"dward de (ono, ,* am $ight, :ou Are 4rong2 ;rom /his to the 5ew $enaisance,,
1771.
2
-hristopher Ale6ander, , Pattern Language . /o%ns" 0uildings" Construction,,
1788
3
(uku tersebut diatas merupakan sumbangan buat bidang arsitektur, tetapi
pengaruhnya di Software "ngineering terlihat jauh lebih besar daripada
pengaruhnya di bidang arsitektur. (uku itu kemudian diterjemahkan dalam
bahasa Software "ngineering oleh /he 1ang o' 2our pada tahun 177<,
dengan judul ,Design Patterns. $lements o' Reuseable Object Oriented
*o't%are,
=
.
Ada banyak >esign %atterns yang sudah diakui kemampuannya, diterima
dan diaplikasikan oleh banyak praktisi. >esign %atterns yang cukup populer
adalah yang diperkenalkan /he ?ang of ;our !?o;# ' "rich ?amma, $ichard
+elm, $alph .ohnson dan .ohn @lissides. >alam /he ?ang of ;our !?o;#
terdapat 9= %attern yang dibagi menjadi = kelompok besar, sebagai berikut 2
Creational Patterns (cara class/object di-inisiasi).
1. Abstract ;actory !-reates an instance of seAeral families of classes#
9. (uilder !Separates object construction from its representation#
=. ;actory Method !-reates an instance of seAeral deriAed classes#
B. %rototype !A fully initialized instance to be copied or cloned#
<. Singleton !A class of which only a single instance can e6ist#
Structural Patterns !strutur/relasi antar object/class)
1. Adapter !Match interfaces of different classes#
9. (ridge !Separates an objectCs interface from its implementation#
=. -omposite !A tree structure of simple and composite objects#
B. >ecorator !Add responsibilities to objects dynamically#
<. ;acade !A single class that represents an entire subsystem#
D. ;lyweight !A fine'grained instance used for efficient sharing#
8. %ro6y !An object representing another object#
!eha"ioral Patterns (tingkah laku atau fungsi dari classEobject.#
1. -hain of $esponbility !A way of passing a reFuest between a chain
of objects#
9. -ommand !"ncapsulate a command reFuest as an object#
=. *nterpreter !A way to include language elements in a program#
B. *terator !SeFuentially access the elements of a collection#
<. Mediator !>efines simplified communication between classes#
D. Mementto !-apture and restore an objectGs internal state#
8. HbserAer !A way of notifying change to a number of classes#
3
"rich ?amma, $ichard +elm, $alph .ohnson, .ohn @lissides, ,Design Patterns.
$lements o' Reusable Object-Oriented *o't%are,, 177<.
4
I. State !Alter an objectGs behaAior when its state changes#
7. Strategy !"ncapsulates an algorithm inside a class#
1J. /emplate Method !>efer the e6act steps of an algorithm to a
subclass#
11. @isitor !>efines a new operation to a class without change#
Secara singkatnya, design pattern adalah best practice pola'pola desain
kelas pada perancangan berorientasi objek. >engan mengaplikasikan
design pattern ini, desain sebuah aplikasi dapat menjadi dinamis terhadap
perubahan.
(erikut ini beberapa contoh design pattern yang umum digunakan2
a. Creational
(erurusan dengan pembuatan objek !object creation#. Pattern jenis ini
berkaitan dengan pembuatan objek.
#. Singleton
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 priAate !atau protected dalam beberapa kasus#. Konstruktor
hanya dapat dipanggil dari dalam kelas. Hbjek lain yang
membutuhkan kelas ini dapat meminta instans kelas dengan
memanggil method statik GetInstance.
-ontoh kelas !dalam bahasa jaAa# yang merupakan Singleton2
class Singleton {
private static Singleton instance = null;
// konstrukto yang modifiernya private
private Singleton {
}
public static Singleton GetInstance() {
if (instance == null) {
instance = ne Singleton();
}
return instance;
}
}
5
9. $actor%
Design pattern ini memisahkan kode untuk membuat objek, sehingga
ketika jenis objek yang dapat dibuat bertambah, kode yang berubah
hanya kode pembuatan objeknya saja.
b. !eha"ioral
Design pattern yang terkait dengan kelakuan !beha&ior#.
#. &bser"er
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.
?ambar HbserAer 0M& class diagram
9. Strateg%
(erguna untuk memecah algoritma menjadi bagian'bagian kecil,
yang dapat diganti dengan mudah.
6
c. Structural
Pattern yang masuk jenis ini adalah yang terkait dengan masalah
struktural.
1. Ada'ter
%attern untuk menyesuaikan interface dari sebuah kelas menjadi
interface yang lain.
9. $acade
%attern untuk memisahkan kode rumit.
Selain design pattern yang disebutkan di atas, masih banyak lagi design
pattern lainnya yang tidak sepopuler design pattern-design pattern di atas.
Pola Rancang (Design Pattern)
Seperti yang disampaikan -hristopher Ale6ander2 Setiap pola
mendeskripsikan sebuah permasalahan yang terus muncul dalam
lingkungan kita, dan kemudian mendeskripsikan inti solusi dari
permasalahan tersebut sedemikian rupa sehingga Anda bisa menggunakan
solusi ini sejuta kali tanpa harus melakukannya dengan cara yang sama dua
kali.
Sederhana sekali, dan sebenarnya tanpa Ale6ander2 katakan sekalipun,
semua orang juga sudah tahu tanpa disadari. $oda bulat sudah diciptakan
dari jaman dahulu kala, lalu rancangan itu dipergunakan dimana'mana
dalam banyak rancangan lain. Seorang perancang membuat satu pintu, lalu
dipakai dimana'mana pada banyak rancangan. Anak'anak kecil juga
merupakan ahli dalam bidang pola !pattern#. Mereka bisa merangkai mainan
&ego sedemikian rupa sampai mencapai bentuk yang rumit, padahal
awalnya hanya merupakan repetisi dari elemen'elemen sederhana. Ada
yang merancang rumah dengan ukuran besar yang bisa dimasuki oleh
manusia dari butir'butir kecil lego tersebut.
Apa yang dikemukakan oleh -hristopher Ale6ander itu, sebenarnya tidak
ada yang luar biasa. /etapi dia mengemukakan hal yang belum benar'benar
disadari banyak orang sebagai satu fondasi penting dalam rancang bangun.
Ale6ander juga membicarakan tentang Katalog %ola !Pattern Catalog# yang
tidak lain adalah pengorganisasian pola'pola yang ada. *tu juga sudah
dilakukan orang sejak lama.
7
-oba Anda perhatikan perusahaan supplier, umumnya mereka
menyediakan buku katalog produk'produk mereka. %erusahaan bahan
bangunan, akan memberi kita katalog bahan'bahan bangunan. >alam
katalog itu disusun bahan'bahan dan komponen'komponen secara teratur,
misalnya bagian pintu, nanti ada bagian %egangan %intu yang terdiri dari
bermacam'macam pegangan, bagian komponen dapur, dsb. Apa yang
dimaksud dalam (ahasa %ola tentang Katalog %ola, adalah persis apa yang
direpresentasikan oleh buku katalog itu. .adi apa susahnya) /idak ada...
>imulai dengan pengetahuan bahwa pattern itu gampang, kita memulai
e6plorasi kita dalam dunia pattern ini. /erkadang, cuma bahasa dan jargon'
jargon yang bikin seseorang pusing, padahal konsep dibelakangnya
sederhana sekali.
Model "s Pattern
0mumnya kita lebih mengenal Model daripada %attern. *tu 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
inAestor bisa mendapatkan gambaran tentang gedung yang ingin dibangun.
%ara perancang pakaian menggunakan model untuk mempromosikan baju'
baju rancangan mereka. .adi sebelum seorang wanita memutuskan
membeli pakaian tersebut, lihatlah bagaimana pakaian itu dikenakan oleh
sang model -atherine 4ilson, dan calon pembelipun membayangkan dirinya
seperti -atherine 4ilson !walaupun mungkin dengan ukuran badan yang
beda#.
Model adalah abstraksi dari realitas. $ealitas 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. Misalnya, sebuah patung pualam dari seorang wanita di $oma.
4anita sebenarnya yang dibuat patung mempunyai banyak sekali bulu'bulu
di kulit, bintik'bintik di muka, semua itu disepuh halus pada pualam, dan
memperlihatkan wanita secara sempurna. /idak heran ada cerita pemahat
patung :unani yang jatuh cinta pada patung yang diukirnya !%ygmalion#.
8
$umus'rumus dalam ilmu fisika merupakan model dari realitas juga, dan
selalu berdasarkan asumsi'asumsi tertentu. %ara ekonom sering
menggunakan kata ceteris paribus ketika mengemukakan sebuah model
sederhana, yang berarti model itu berlaku jika semua hal lain dianggap
sama !yang dalam realitas sebenarnya pasti berbeda#.
%ola atau pattern itu terutama bukan abstraksi dari realitas. %attern lebih
mengacu pada pengalaman !e!perience# berrealitas. %engalaman
memperlihatkan adanya repetisi dari realitas. Suatu pattern selalu berulang
!kalau tidak berulang, maka tidak lagi dinamakan sebagai pattern#. >ari
pengalaman seorang tukang jahit, dia bisa mendapatkan bahwa pola'pola
baju pelanggannya mempunyai bagian yang sering berulang. >ari
pengalaman itu, dia bisa membuat pola standar, dan kemudian pola ini baru
disesuaikan ke badan setiap orang !customi3ation#. 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. (agian 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.
(esi)'ulan
(aik Model maupun %attern, 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 %attern mengatasi
kompleksitas dengan mendapatkan repetisi E pengulangan dari pola'pola
dasar.
Model itu bersifat struktural, sedangkan %attern itu bersifat literal. >engan
Model, kita melihat bagaimana komponen'komponen dalam model tersebut
saling berhubungan secara struktural dalam membangun model tersebut.
>engan %attern, kita melihat bagaimana pola'pola dasar saling melengkapi
untuk membuat suatu gambaran yang lebih besar.
9
Kita menggunakan Model dan %attern untuk mengatasi kompleksitas dari
realitas. %erpaduan antara model dan pattern, akan menghasilkan kekuatan
ganda dalam mengatasi kompleksitas. Kita bisa mendapatkan 4odelling
%ith Patterns, dan Patterns o' 4odels. Semua ini adalah usaha untuk
meningkatkan kemampuan kita dalam mengatasi persoalan yang semakin
lama semakin rumit. /idak ada yang menyangkal bahwa persoalan teknologi
saat ini jauh lebih rumit daripada puluhan tahun lalu. /etapi banyak
perancang dan ahli teknologi masa kini merasa bahwa tugas mereka malah
semakin mudah, berkat digunakannya Model dan %attern. >ua konsep yang
sebenarnya sederhana, tetapi mampu membuat pembedaan yang berarti.
Da*tar Pustaa+
http2EEale6budiyanto.web.idE9JJDEJ8E=JEintroducing'to'design'pattern.html,
*ntroducing /o >esign %attern, Software "nginering Ale6 (udiyanto
http2EEen.wikipedia.orgEwikiE>esignKpatternK!computerKscience#
http2EEwww.dofactory.comE%attern sE %attern s.asp6 , >esign %atterns in -L and
@(.5"/ ' ?ang of ;our !?H;#
http2EEwww.socineer.comEt6tEsains'patmodel .html , Model dan %ola $ancang,
/he ?ang of ;our !?o;# "rich ?amma, $ichard +elm, $alph .ohnson, and
.ohn @lissides. >esign %atterns2 "lements of $eusable Hbject'Hriented
Software !*S(5 J'9J1'D==D1'9#
10

Anda mungkin juga menyukai