Thursday 4 April 2013

Pattern Facade di Java, C# dan PHP

Penerapan design pattern di Java, C#, dan PHP memang menjadi target ane yang harus ane selesaikan dalam waktu dekat, karena sebenar nya memang ane belajar design pattern ini sudah agak lama yaitu sebelum liburan semester kmaren selesai, kali ini giliran si pattern facade untuk dibahas.. malam ini sebelum menulis artikel Pattern facade di Java, C#, C++ dan PHP ini ane sempatin sebentar buat update status di facebook, mengingat sudah agak lama tidak update (biar gak dikira gak diurus facebook nya) ... status ane malam ini adalah "selagi bisa belajar, maka ambilah kesempatan itu" .... Sebenarnya ane ambil kata2 ini dari film 3 idiot yang pastinya ente udah pernah liat, kalo gak pernah berarti ente ketinggalan zaman, film ini sangat bagus dan memberikan inspirasi yang banyak buat ane :D ...
Arti dari kata2 itu sangatlah luas, selagi bisa belajar, maka ambilah kesempatan itu... kalo sekarang ane lagi kuliah, setiap hari nya dipenuhi dengan kegiatan belajar, belajar dan belajar... apa tidak bosan ?? nah itu ane jawab dengan lanjutan status tadi "seharusnya kita bisa menikmati indahnya pengetahuan"... kalo kita bisa menikmati sesuatu, kita tidak akan mudah bosan dengan sesuatu itu, menikmati disini juga luas artinya, bisa bersyukur, bisa mengagumi, bisa bangga dll lah... dan intinya kita bisa menambah rasa penasaran pad sebuah ilmu, dengan begitu kita gak akan mudah bosen gan :D dijamin deh, karena kita akan merasa kurang dan kurang untuk mempelajari ilmu, itu bukan TAMAK, tapi itu adalah sebuah anugrah bagi kita para pecinta ilmu pengetahuan :)
Oke sekarang ane mau jelasin tentang pattern facade ini, 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.
pada penerapan yang ane kasi nanti ane pake contoh di kehidupan sehari - hari, seperti saat kita makan direstoran, sub system nya itu kasir, koki dan  pengantar makanan, masing2 dari sub system mempunyai tugas masing2 dan saling berhubungan dengan sub system lainnya, dan kita tidak perlu mengetahui bagaimana sub system mengerjakan tugas2 nya, bukannya begitu ya ?? kalo direstoran apa pernah kita ruwet, tanya dengan proses yang dikerjakan koki saat membuat makanan kita ? gak to ? :D kita hanya perlu memesan makanan dan membayar dan nanti nya pesanan akan diantar ke meja kita... begitu juga dengan pattern facade ini, dengan kata lain pattern facade bertindak sebagai perwakilan dari beberapa sub sistem yang rumit di bawahnya.
sekarang saat nya mengimplementasikannya ke Java, C# dan PHP

Java
package Facade;

public class MainClass {
 public static void main(String[] args) {
  Pesan();
 }
 
 public static void Pesan(){
  Kasir kasir = new Kasir();
  Koki koki = new Koki();
  Pelayan pelayan = new Pelayan();
  
  kasir.Post();
  koki.Persiapan();
  koki.Memasak();
  koki.Post();
  pelayan.Post();
  kasir.Simpan();
 }
}

class Kasir{
 public void Post(){
  System.out.println("Memberi tahu ke pihak dapur jika ada pesanan");
 }
 
 public void Simpan(){
  System.out.println("Simpan Pembayaran");
 }
}

class Koki{
 public void Persiapan(){
  System.out.println("Menyiapkan Bahan Masakan yang dipesan");
 }
 
 public void Memasak(){
  System.out.println("Memasak makanan yang dipesan");
 }
 
 public void Post(){
  System.out.println("Memberikan kepada pelayan untuk diantar pesanannya ke pemesan");
 }
}

class Pelayan{
 public void Post(){
  System.out.println("Mengantar pesanan ke pemesan");
 }
}  

C#
using System;

namespace Facade
{
 class Program
 {
  public static void Main(string[] args)
  {
   Pesan();
   Console.ReadKey(true);
  }
  
  public static void Pesan(){
   Kasir kasir = new Kasir();
   Koki koki = new Koki();
   Pelayan pelayan = new Pelayan();
   
   kasir.Post();
   koki.Persiapan();
   koki.Memasak();
   koki.Post();
   pelayan.Post();
   kasir.Simpan();
  }
 }
 
 class Kasir{
  public void Post(){
   Console.WriteLine("Memberi tahu ke pihak dapur jika ada pesanan");
  }
  
  public void Simpan(){
   Console.WriteLine("Simpan Pembayaran");
  }
 }
 
 class Koki{
  public void Persiapan(){
   Console.WriteLine("Menyiapkan Bahan Masakan yang dipesan");
  }
  
  public void Memasak(){
   Console.WriteLine("Memasak makanan yang dipesan");
  }
  
  public void Post(){
   Console.WriteLine("Memberikan kepada pelayan untuk diantar pesanannya ke pemesan");
  }
 }
 
 class Pelayan{
  public void Post(){
   Console.WriteLine("Mengantar pesanan ke pemesan");
  }
 }
}  

PHP
<?php

 class Kasir{
  function Post(){
   echo("Memberi tahu ke pihak dapur jika ada pesanan< br />");
  }
  
  function Simpan(){
   echo("Simpan Pembayaran< br />");
  }
 }

 class Koki{
  function Persiapan(){
   echo("Menyiapkan Bahan Masakan yang dipesan< br />");
  }
  
  function Memasak(){
   echo("Memasak makanan yang dipesan< br />");
  }
  
  function Post(){
   echo("Memberikan kepada pelayan untuk diantar pesanannya ke pemesan< br />");
  }
 }

 class Pelayan{
  function Post(){
   echo("Mengantar pesanan ke pemesan<br />");
  }
 }

 $kasir = new Kasir();
 $koki = new Koki();
 $pelayan = new Pelayan();
  
 $kasir->Post();
 $koki->Persiapan();
 $koki->Memasak();
 $koki->Post();
 $pelayan->Post();
 $kasir->Simpan();
?>  

ane rasa ente sudah paham dengan pattern facade ini, dengan keterangan yang ane kasi tadi dan implementasinya di Java, C# dan PHP... kalo ada yang ditanyakan monggo tinggalkan komentar... hehee dan  cukup dulu untuk postingan design pattern kali ini, semoga bermanfaat untuk kita semua :) amiiin

No comments:

Post a Comment