Anda di halaman 1dari 28

DESIGN

PATTERN
KELOMPOK 2
FAISAL YUSUF ADIWIJAYA
GINO SUNARTO
ARIZAL FIRDAUS
MOCH. IRFANDI SUSANTO
FITRA ZUL FAHMI
MALAQ ABDILLAH SOLIHIN
YULISNA GITA HAPSARI

:
:
:
:
:
:
:

1103110007
1103110117
1103110122
1103110125
1103110127
1103110198
1103110202

(ADAPTER PATTERN)
(FAADE PATTERN)
(FLYLIGHT PATTERN)
(PROXY PATTERN)
(BRIDGE PATTERN)
(COMPOSITE PATTERN)
(DECORATOR PATTERN)

BRIDGE PATTERN

Bridge pattern merupakan design pattern yang termasuk


dalam kelompok Structural Pattern.
Yang memiliki arti untuk memisahkan abstraksi dari
implementasinya, sehingga keduanya dapat berdiri
secara independen
Bridge menggunakan enkapsulasi, agregasi, dan dapat
juga menggunakan inheritance untuk memisahkan
pertanggung jawaban menjadi kelas yang berbeda

Struktur

Abstraction (Kelas Abstrak)


mendefinisikan interface abstrak
mempertahankan referensi implementor
Refined Abstraction (Kelas Normal)
meng-extends interface yang didefinisikan oleh Abstraction
Implementor (Interface)
mendefinisikan interface untuk kelas implementasi
Concrete Implementor (Kelas Normal)
meng-implementasi interface implentor

Example with Java

Program mengilustrasikan suatu bentuk, contoh


API1.circle at 1.000000:2.000000 radius 7.5000000
API2.circle at 5.000000:7.000000 radius 27.500000

/** "Implementor" */
interface DrawingAPI {
public void drawCircle(double x, double y, double
radius);
}
/** "ConcreteImplementor" 1/2 */
class DrawingAPI1 implements DrawingAPI {
public void drawCircle(double x, double y, double radius)
{
System.out.printf("API1.circle at %f:%f radius %f\n", x,
y, radius);
}
}

/** "ConcreteImplementor" 2/2 */


class DrawingAPI2 implements DrawingAPI {
public void drawCircle(double x, double y, double radius)
{
System.out.printf("API2.circle at %f:%f radius %f\n", x,
y, radius); }
}
/** "Abstraction" */
abstract class Shape {
protected DrawingAPI drawingAPI;
protected Shape(DrawingAPI drawingAPI)
{ this.drawingAPI = drawingAPI; }
public abstract void draw(); // low-level
public abstract void resizeByPercentage(double pct); /**
high-level **/
}

/** "Refined Abstraction" */


class CircleShape extends Shape {
private double x, y, radius;
public CircleShape(double x, double y, double radius,
DrawingAPI drawingAPI) {
super(drawingAPI);
this.x = x; this.y = y; this.radius = radius; }
// low-level i.e. Implementation specific
public void draw() {
drawingAPI.drawCircle(x, y, radius); }
// high-level i.e. Abstraction specific
public void resizeByPercentage(double pct) {
radius *= pct; }
}

/** "Client" :**/


class BridgePattern {
public static void main(String[] args) {
Shape[] shapes = new Shape[] {
new CircleShape(1, 2, 3, new DrawingAPI1()), new
CircleShape(5, 7, 11, new DrawingAPI2()), };
for (Shape shape : shapes) {
shape.resizeByPercentage(2.5); shape.draw(); }
}
}

COMPOSITE PATTERN
Dalam rekayasa perangkat lunak, pola komposit adalah
pola desain partisi. Pola komposit menggambarkan bahwa
sekelompok objek harus diperlakukan dengan cara yang
sama sebagai satu contoh dari obyek. Maksud dari
komposit adalah untuk menulis objek ke dalam struktur
pohon untuk mewakili bagian-keseluruhan hirarki.
Menerapkan pola komposit memungkinkan klien
memperlakukan objek individu dan komposisi seragam

COMPOSITE PATTERN
When to use Composite pattern ?
Composit dapat digunakan ketika klien harus
mengabaikan perbedaan antara komposisi objek dan
objek individu . Jika programmer menemukan bahwa
mereka menggunakan beberapa objek dengan cara yang
sama, dan sering memiliki kode hampir identik untuk
menangani masing-masing, kemudian komposit pilihan
yang baik, tetapi kurang kompleks dalam situasi ini
untuk mengobati primitif dan komposit sebagai
homogen.
Composite Pattern digunakan untuk merepresentasikan
sebuah hirarki objek sehingga dapat sebuah objek dapat
menjadi komposisi bagi objek yang lain

COMPOSITE PATTERN
Structure

Contoh kasus

DECORATOR PATTERN
Adalah sebuah pola yang digunakan untuk menambahkan
tanggung jawab tambahan untuk objek secara dinamis.
Terjadi ketika ada kebutuhan untuk menambahkan serta
menghapus tanggung jawab ke kelas secara dinamis dan
subclassing tidak mungkin dilakukan karena subclass yang
dapat terjadi akan sangat banyak
Memodifikasi value-value yang dimiliki oleh kelas utama,
tanpa mengubah bentuk dan identitas dari si kelas utama.

DECORATOR PATTERN
Tujuan :
Menciptakan suatu mata rantai object, dimana setiap
object mempunyai objects responsible pada fungsi objek
berikutnya.
Memperkaya behaviour dari suatu class
Melakukan inheritance secara lebih fleksibel

DECORATOR PATTERN
Kelas peserta dalam pola dekorator adalah:
Komponen - Interface untuk benda yang dapat
memiliki tanggung jawab ditambahkan kepada mereka
secara dinamis.
ConcreteComponent - Mendefinisikan sebuah objek
yang tanggung jawab tambahan dapat ditambahkan.
Dekorator - Menjaga referensi ke objek Komponen dan
mendefinisikan antarmuka yang sesuai dengan
antarmuka Komponen ini.
ConcreteDecorator behaviour baru yang
ditambahkan

DECORATOR PATTERN

DECORATOR PATTERN
(Contoh Kasus)
Ada employee, dia bisa join/mulai kerja atau
terminate/berhenti kerja.
Kemudian employee dikhususkan lagi (berurutan sesuai
tanggung jawab) sbb: team member, team lead, manager.

DECORATOR PATTERN
(Contoh Kasus)
Traditional Approach

DECORATOR PATTERN
(Contoh Kasus)
Decorator

Facade Pattern
Faade adalah interface dimana aplikasi dapat
menggunakannya untuk melakukan sesuatu tanpa
mengkhawatirkan mengenai detail-detail yang terlibat.
Faade digunakan ketika seseorang menginginkan untuk
berhubungan dengan interface yang mudah digunakan dan
sederhana dalam bekerja.
Design pattern faade
menyediakan interface yang mudah untuk digunakan
dibandingkan dengan koleksi dari interface subsistem yang
kompleks. Hal ini dapat membuatnya lebih mudah dengan
menyembunyikan detail dari implementasi.

Facade Pattern
Design pattern faade menghubungkan kode yang kita
tulis untuk suatu aplikasi yang melakukan pekerjaan yang
spesifik seperti membuat laporan, dan implementasi dari
level bawah yang menangani detail seperti membaca file,
berinteraksi dengan jaringan, dan membuat suatu output.
Faade
adalah
interface
dimana
aplikasi
dapat
menggunakannya untuk melakukan sesuatu tanpa
mengkhawatirkan mengenai detail-detail yang terlibat.
Faade memisahkan layer-layer yang terlibat sehingga layerlayer tersebut tidak bergantung satu sama lainnya dimana
membuat masing-masing layer dapat dengan mudah untuk
dikembangkan,
mudah
untuk
digunakan,
dan
mempertimbangkan untuk menggunakan code re-use.

Facade Pattern
Bagaimanapun juga, faade dapat menjadi sangat
kompleks untuk subsistem yang sangat besar. Untuk itu,
perlu ditambahkan abstract faade diatas faade yang telah
ada. Salah satu contoh yang umum adalah dengan
menggunakan pattern melalui webservice, dimana membuat
webservice berperilaku sebagai faade atau interface
terhadap banyak dll yang berbeda yang masing-masing
merepresentasikan suatu subsistem tertentu.

PROXY PATTERN
(pengertian)

Adalah pola desain yang menyediakan kelas pengganti


untuk memanggil kelas sebenarnya.
Pola desain ini biasa digunakan bilamana ada sebuah
kelas yang membutuhkan sumber daya cukup besar,
sehingga performa aplikasi akan jauh lebih baik
bilamana kelas ini dipanggil bilamana benar-benar
dibutuhkan.

PROXY PATTERN
(tujuan & pemakaian)

Dalam situasi di mana beberapa salinan dari obyek yang


kompleks harus ada, pola proxy dapat disesuaikan untuk
memasukkan pola flyweight untuk mengurangi memori
aplikasi. Biasanya, satu contoh dari obyek yang
kompleks dan beberapa objek proksi yang diciptakan,
semuanya mengandung referensi ke obyek kompleks
tunggal yang asli. Setiap operasi yang dilakukan pada
proxy akan diteruskan ke objek asli. Setelah semua
instance dari proxy keluar dari ruang lingkup, memori
obyek yang kompleks mungkin akan di-dealokasikan.

PROXY PATTERN
(struktur)

PROXY PATTERN
(contoh)

Referensi :
Bridge Pattern
Blankenship, George. Object Oriented Design : Bridge Pattern.
http://en.wikipedia.org/wiki/Bridge_pattern
Decorator Pattern
http://dherrystikom.blogspot.com/2012/07/decorator-pattern.html
http://zishanbilal.wordpress.com/2011/04/28/design-patterns-by-example
s-decorator-pattern
/
http://
coretantian.blogspot.com/2012/04/modul-4-structural-patterns-decorator
.html
Composite Pattern
http://itsport.blog.com/composite-desain-pattern /
http://fadlikadn.files.wordpress.com/2013/10/composite-class-diagramcontoh-kasus.png

Referensi :

Proxy Pattern
http://www.oodesign.com/proxy-pattern.html
http://en.wikipedia.org/wiki/Proxy_pattern

Anda mungkin juga menyukai