Tutorial Design Pattern : Penerapan Design Pattern Facade di PHP

Kembali lagi di postingan saya yang kedua malam ini, masih seputar design pattern dengan kadar kegalauan yang sudah agak menurun sedikit :p. Berkat roti conatto yang sempat saya beli tadi siang ketika pulang dari kampus dan masih ada yang kurang komplit yaitu saya tidak bisa merokok di rumah karena maklumlah disini cuma numpang sama bukde. Nah…di postingan design pattern yang ke-16 ini saya akan membahas design pattern Facade, si pattern yang berfungsi untuk menyediakan sebuah antar muka yang seragam dalam sebuah sub sistem. Bisa dibilang Facade ini menyediakan sebuah antar muka pada level yang sudah tinggi alias sudah berada pada level atas, tujuannya agar sub sistem yang berada di bawahnya lebih mudah digunakan. Antar muka yang nantinya dihadapkan pada pengguna akan terlihat lebih sederhana, dimana pengguna tidak perlu mengetahui bagaimana sub sistem yang berada pada level bawah.

Penggunaan design pattern Facade dalam kehidupan sehari-hari sangat banyak kita temui, contohnya ialah pada penggunaan komputer. Pengguna komputer awam maupun yang sudah mahir ketika akan menghidupkan komputer tidak perlu mengetahui serangkaian proses yang dilakukan oleh seperangkat komputer dari yang awalnya tidak hidup menjadi hidup dan bisa digunakan untuk menyelesaikan pekerjaan. Pengguna tidak perlu mengetahui bagaimana detail prosesnya, dimana urutannya seperti berikut :

  1. freeze (cpu)….
  2. memory (memory)….
  3. jump (cpu)….
  4. eksekusi (cpu)….
  5. harddisk (harddisk)….

Penggun cuma mengetahui cara menghidupkan komputer yang ini kita sebut sebagai pattern Facade, lebih sederhana dan ringkas untuk antar muka level atas. Dengan kata lain, pattern Facade ini bertindak sebagai perwakilan dari beberapa sub sistem yang rumit di bawahnya. Sekarang kita coba untuk menerapkannya ke dalam script PHP seperti di bawah ini :

<?php

class Cpu {
    public function freeze()
	{
		echo "jalankan freeze.... <br>";
	}
    public function jump()
	{
		echo "jalankan jump.... <br>";
	}
    public function execute()
	{
		echo "eksekusi.... <br>";
	}
}

class Memory {
    public function load()
	{
		echo "load memory.... <br>";
	}
}

class HardDisk {
    public function read()
	{
		echo "baca harddisk.... <br>";
	}
}

class Komputer {
    private $cpu;
    private $memory;
    private $hd;

    public function __construct()
	{
        $this->cpu = new Cpu();
        $this->memory = new Memory();
        $this->hd = new HardDisk();
    }

    public function hidupkan_komputer()
	{
        $this->cpu->freeze();
        $this->memory->load();
        $this->cpu->jump();
        $this->cpu->execute();
        $this->hd->read();
    }
}

    $komputer = new Komputer();
    $komputer->hidupkan_komputer();

?>

Pada script di atas terdapat 3 class (Cpu, Memory, dan Harddisk) yang mempunyai method rumit pada kenyataannya. Dipanggil melalui sebuah class Komputer yang dalam dunia nyata kita anggap sebagai sebuah komputer yang sudah lengkap dan diwakili oleh sebuah tombol power untuk menjalankan semua method yang dimiliki oleh class-class di atas, hingga akhirnya komputer tersebut hidup. Sangat sederhana kan…??? OK deh, sekian dulu postingan saya di malam ini. Semoga bisa bermanfaat untuk kita semua.

Happy Blogging and Keep Coding

Cheerrrss….!!!!