140 likes | 332 Views
Decorator Pattern. Tujuan Pembelajaran. Mengetahui model persoalan yang menggunakan Decorator pattern Mengetahui bagaimana menerapkan Decorator pattern pada program Mampu menerapkan Decorator pattern untuk meningkatkan fleksibilitas kode. Koleksi Desain Pattern.
E N D
TujuanPembelajaran Mengetahui model persoalan yang menggunakan Decorator pattern Mengetahuibagaimanamenerapkan Decorator pattern pada program Mampumenerapkan Decorator pattern untukmeningkatkanfleksibilitaskode
KoleksiDesain Pattern • Creational Patterns : • Singleton • Factory • Behavioural Patterns : • Strategy • Decorator
Example : Starbuzz Coffee Bgmjikakitainginmenambahkanpelengkap pd kopi, misalnya steamed milk, soya, mocha, dll ? Decaf DarkRoast HouseBlend Espresso cost() cost() cost() cost() Beverage description getDescription() cost() //other methods
AlternatifPertama DecafWith Mocha HouseBlendWithSoya DecafWithSteamedMilk EspressoWithSoya HouseBlendWithMocha DecafWithSoya HouseBlendWithSteamedMilk cost() cost() cost() cost() cost() cost() cost() Beverage description getDescription() cost() //other methods
AlternatifKedua Bgmjikaterjadiperubahanhargadaritiappelengkap, penambahanjenispelengkap, bgmjikapelangganingin double whip? Decaf DarkRoast HouseBlend Espresso cost() cost() cost() cost() Beverage description milk soya milk whip getDescription() cost() hasMilk() setMilk() hasSoya() setSoya() hasWhip() setWhip() hasMocha() setMocha() //other methods
PrinsipPerancangan Identify the aspects of your application that vary and separate them from what stays the same Program to an interface not and implementation Favor composition over inheritance Strive for loosely coupled designs between object that interact. Classes should open for extension, but closed for modification
Menerapkan Decorator Misalnya, pelangganinginsecangkirDark RoastditambahWhipdanMocha. cost = … mocha.cost() mocha calls whip.cost() whip calls darkRoast.cost() darkRoast returns $darkRoast whip returns ($darkRoast+$whip) mocha returns ($darkRoast+$whip+ $mocha)
Latihan Terdapatduatipe Mobil yaituXenosA (155 jt) danXenosB (141 jt). Penggunamobildapatmemilihvariasiuntukdipasangpadatiaptipemobil. Variasi yang tersedia console box (175 rb), spoiler (500 rb), dan grill (280 rb). Buatlah program yang dapatmenambahkanvariasisecaradinamisketiaptipemobilsekaligusmenghitung total harganya. Gunakan Decorator Pattern untukmenyelesaikanpersoalandiatas.