220 likes | 488 Views
Facade Design Pattern. Surya | 7409040001 Kemal | 7409040003 Fariz | 7409040004 Deny | 7409040012. Facade. Menyediakan Interface yang seragam untuk satu set interface dalam sebuah subsistem Membungkus subsistem yang rumit dengan interface yang sederhana. Penggunaan Facade.
E N D
Facade Design Pattern Surya | 7409040001 Kemal | 7409040003 Fariz | 7409040004 Deny | 7409040012
Facade • Menyediakan Interface yang seragamuntuksatu set interface dalamsebuahsubsistem • Membungkussubsistem yang rumitdengan interface yang sederhana
Penggunaan Facade Digunakanketikasegmen dari client membutuhkan interface yang sederhana untuk menjalankan semua fungsi dari subsitem yang kompleks
Gunakan Façade Saat • inginmenyediakan interface yang simple dari subsystem yang kompleks. • ada banyak dependensi antara klien dan class implementasi dariabstraksi
Participants • Façade (compiler) • Mengetahui subsystem class mana yang responsibeluntuk di request. • delegasi permintaan klien untuk objek subsistem yang tepat.
Participants (cont’d) • Subsystem Class (Scanner, Parser, ProgramNode, etc) • melaksanakan fungsi subsistem. • menangani pekerjaan yang ditugaskan oleh objek Facade.
Permasalahan • Ketika film selesai, bagaimana Anda mematikan semuanya?Tidakkah Anda harus melakukan semua ini lagi, secara terbalik? • Akankahsekompleks saat mendengarkan CD atau radio? • Jika Anda memutuskan untuk meng-upgrade sistem Anda, Anda mungkin akanharus belajar prosedur yang sedikit berbeda.
Class Diagram watchMovie() Play() On()
Penjelasan • Membuat facade untuksistem home theater • Class façade memperlakukankomponen home theater sebagaisubsystem,danmemanggilpada subsystem untukmengimplementasikanwatchMovie() method • Client sekarangmemanggil method pada home theater façade,tidakpadasubsystem • Façade masihmenyisakanakses subsystem untuk di gunakansecaralangsung
Membangun Home Theatre Facade public class HomeTheaterFacade { Amplifier amp; Tuner tuner; DvdPlayerdvd; CdPlayer cd; Projector projector; TheaterLights lights; Screen screen; PopcornPopper popper; Semuakomponendari subsystem yang akankitagunakan
Membangun Home Theatre Facade public HomeTheaterFacade(Amplifier amp, Tuner tuner, DvdPlayer dvd, CdPlayer cd, Projector projector, Screen screen, TheaterLights lights, PopcornPopper popper) { Facade melewatkan sebuah references untuk setiap komponen subsistem dalam konstruktor. Facade kemudian memberikan setiap variabel contoh yang sesuai.
Membangun Home Theatre Façade (cont’d) this.amp = amp; this.tuner = tuner; this.dvd = dvd; this.cd = cd; this.projector = projector; this.screen = screen; this.lights = lights; this.popper = popper; } // other methods here }
Implementing Simplified Interface public void watchMovie(String movie) { System.out.println(“Get ready to watch a movie...”); popper.on(); popper.pop(); lights.dim(10); screen.down(); projector.on(); projector.wideScreenMode(); amp.on(); amp.setDvd(dvd); amp.setSurroundSound(); amp.setVolume(5); dvd.on(); dvd.play(movie); } watchMovie () mengikutiurutan yang samakitaharusmelakukandengantangansebelumnya, tapimembungkusitudalammetodepraktis yang melakukansemuapekerjaan.
Implementing Simplified Interface (cont’d) public void endMovie() { System.out.println(“Shutting movie theater down...”); popper.off(); lights.on(); screen.up(); projector.off(); amp.off(); dvd.stop(); dvd.eject(); dvd.off(); } Dan endMovie() berperanmematikansemuauntukkita,sekalilagi, setiap tugas didelegasikan ke komponen yang sesuai dalam subsistem.
Time to watch a Movie (the easy way) public class HomeTheaterTestDrive { public static void main(String[] args) { // instantiate components here HomeTheaterFacadehomeTheater = new HomeTheaterFacade(amp, tuner, dvd, cd, projector, screen, lights, popper); homeTheater.watchMovie(“Raiders of the Lost Ark”); homeTheater.endMovie(); } } PertamaAnda instantiate Facade dengansemuakomponendalamsubsistem. Gunakan interface yang disederhanakanuntukpertamamemulai film, dankemudianmenutupnya
Output Berikut output memanggil façade watchMovie(),beginilahsemuabekerjauntukklien dan di sini, kitasudahselesaimenonton film, sehinggamemanggilendMovie () untukmembuatsemuanya off