DESIGN PATTERN
LATAR BELAKANG • Design Pattern mulai dikenal pada awal tahun 1980an MVC for Smalltalk • MVC (Model-View-Controller) :
Latar Belakang (lanj..) • Design Pattern mulai digunakan
secara formal di awal tahun 1990an oleh Helm(1990) dan Erich Gamma(1992).
Pengertian • Menurut Christopher Alexander, 1977 :
• •
“Masing-masing pattern mendeskripsikan suatu problem yang terjadi lagi dan lagi dalam lingkungan dan kemudian mendeskripsikan inti dari solusi permasalahan tersebut,sehingga kita dapat menggunakan solusi ini berulang kali tanpa melakukan hal yang sama dua kali ” “Design patterns merupakan solusi yang berulang kali digunakan untuk memecahkan masalah desain yang sering kali ditemui”(et. al., 1998). ”Design Pattern merupakan suatu kumpulan aturan yang mendeskripsikan bagaimana menyelesaikan masalah-masalah dalam bidang pengembangan perangkat lunak”. (Pree, 1994)
Good pattern A good pattern should •Be as general as possible •Contain a solution that has been proven to effectively solve the problem in the indicated context
4 Elemen Penting dalam DP : • nama • • •
Untuk membedakan pattern yang satu dengan pattern yang lain problem Menjelaskan kapan mengaplikasikan pattern dari batasan problem dan context yang ada solution Mendeskripsikan element untuk membuat design, relationship, responsibility dan collaboration Consequences hasil dari pengaplikasian pattern
Kategori Design Patterns • Berdasarkan scope/ruang lingkup : class level Mengidentifikasi hubungan antar-class yang didefinisikan pada saat compiletime dan cenderung lebih statis Object level Mendeskripsikan hubungan yang dapat berubah pada saat run time sehingga sifatnya lebih dinamis
Kategori Design Patterns (lanj..) • Berdasarkan tujuannya :
Creational Patterns Adalah patterns yang terkait dengan proses instalasi atau konstruksi objek. Pada umumnya creational pattern memisahkan operasi suatu aplikasi dari bagaimana objeknya diciptakan. lebih menekankan pada proses instansiasi objek. Structural Patterns pattern yang berkaitan dengan penyusunan class dan objek untuk membentuk struktur yang lebih besar. Untuk menyusun struktur yang lebih besar, struktural pattern banyak menggunakan inheritance dan aggregation. Behavioral Patterns ditujukan untuk mengatasi permasalahan yang muncul ketika kita akan menetapkan class responsibility dan algoritma. Behavioral design pattern tidak hanya merekomendasikan hubungan statis tertentu antara objek dan class tetapi juga menguraikan bagaimana objek-objek tersebut berkomunikasi.
Kategori Design Patterns (lanj..)
Creational Pattern • Factory Method • Abstract Factory Method • Builder Pattern • Prototype Pattern • Singleton Pattern
Singleton Pattern • dapat digunakan untuk memastikan bahwa hanya •
ada sebuah instance suatu class yang diciptakan. Model Logic Singleton Pattern Model untuk menggambarkan Singleton sangat mudah dipahami karena hanya ada satu Singleton instance. Client mengakses Singleton instance melalui satu akses point yang diketahui. Client dalam kasus ini adalah objek yang membutuhkan akses untuk satu instance dari Singleton.
Singleton Pattern(lanj..) • Model Fisik Singleton Pattern Model fisik dari Singleton juga sangat mudah dipahami. Gambar di bawah ini menunjukkan UML model dari Singleton Pattern dalam bentuk class diagram
• public class ClassicSingleton {
private static ClassicSingleton instance = null; protected ClassicSingleton() { // Exists only to defeat instantiation. } public static ClassicSingleton getInstance() { if(instance == null) { instance = new ClassicSingleton(); } return instance; } }
Struktural Pattern • Adapter • Bridge • Composite • Decorator • Façade • Flyweight • Proxy
Behavioral Pattern • • • • • • • • • •
Observer Mediator Chain of Responsibility Template Interpreter Strategy Visitor State Command Iterator
How to Select & Use Design Patterns How to Select (> 20 in the book, and still growing … fast?, more on Internet) • Scan Intent Sections • Study How Patterns Interrelate • Study Patterns of Like Purpose • Examine a Cause of Redesign • Consider What Should Be Variable in Your Design
How to Use • Read the pattern once through for an
overview: appears trivial, but not • Go back and study the structure, participants, and collaborations sections • Look at Sample Code: concrete example of pattern in code • Choose names for pattern participants • Define the classes • Define application specific names for operations in the pattern • Implement the operations to carry out the responsibilities and collaborations in the pattern
Yang perlu diingat adalah meskipun design pattern itu adalah solusi yang umum, design pattern tersebut hanyalah solusi untuk satu masalah spesifik. Tiap design pattern mempunyai cakupan tersendiri, dan terkadang ada masalah yang hanya bisa diselesaikan dengan gabungan dari beberapa design pattern sekaligus atau ada pula masalah yang hanya bisa diselesaikan secara nonpattern (meski jarang).
Referensi Buku • Design Patterns : Elements of Reusable Object-
•
Oriented Software (1995) – (The-Gang-of-Four Book) – The-Gang-of-Four (GoF) - Gamma, Helm, Johnson , Vlissides Analysis Patterns - Reusable Object Models (1997) – Martin Fowler