Wednesday, 3 April 2013

Pattern Template di Java, C# dan PHP

Kali ini ane coba untuk membahas salah satu jenis dari design pattern Behaviour, setelah postingan - postingan sebelumnya udah ane bahas pattern creational (singleton dan prototype)dan structural (adapter, dan tentunya masih menggunakan Java, C# dan C++.. kan kemaren ane udah ane upload kategori creational dan structural kali ini giliran salah satu pattern model behaviour, biar gak iri maksud nya :D ...
Pattern ini juga sering sekali dipakai, melihat dari kebutuhan system jika menggunakan pattern template ini akan sangat mudah untuk dirawa.. kenapa ? pertama kita harus mengerti dulu definisi pattern template ini yang nanti akan ane kasi contoh programnya dengan Java, C# dan PHP... template yang kita tau definisinya adalah sebuah karya jadi yang bisa kita gunakan. laa tidak jauh berbeda pengertinnya dengan itu, pattern template ini juga menyediakan kerangka sebuah desain system yang bisa digunakan namun kita tidak bisa mengubahnya karena didalam nya ada standarisasi yang harus diikuti :D ... dari pada kebingungan mending kita langsung ke contoh programnya yang ane tulis pake Java, C# dan PHP, dan nanti Insya Alloh akan ane kasi sedikit penjelasan :)

Java
package Template;

public class MainClass {
 public static void main(String[] args) {
  Template kopi = new BikinKopi();
  kopi.DoIt();
  
  System.out.println("-----------------");
  
  Template mie = new BikinMieInstans();
  mie.DoIt();
 }
}

abstract class Template{
 public final void DoIt(){
  Persiapan();
  Proses();
  Selesai();
 } 
 public abstract void Persiapan();
 public abstract void Proses();
 public abstract void Selesai();
}

class BikinKopi extends Template{
 @Override
 public void Persiapan() {
  System.out.println("Buka Bungkus Kopi Saset");
 }
 
 @Override
 public void Proses() {
  System.out.println("Seduh dengan air panas");
 }
 
 @Override
 public void Selesai() {
  System.out.println("Siap disajikan");
 }
}

class BikinMieInstans extends Template{
 @Override
 public void Persiapan() {
  System.out.println("Buka Bungkus Mie Instance");
 }
 @Override
 public void Proses() {
  System.out.println("Masak dengan air mendidih");
 }
 @Override
 public void Selesai() {
  System.out.println("Siap disajikan");
 }
}  

C#
using System;

namespace Template
{
 class Program
 {
  public static void Main(string[] args)
  {
   Template kopi = new BikinKopi();
   kopi.DoIt();
   
   Console.WriteLine("-----------------");
   
   Template mie = new BikinMieInstans();
   mie.DoIt(); 
   
   Console.ReadKey(true);
  }
 }
 
 abstract class Template{
  public void DoIt(){
   Persiapan();
   Proses();
   Selesai();
  } 
  public abstract void Persiapan();
  public abstract void Proses();
  public abstract void Selesai();
 }
 
 class BikinKopi : Template{
  
  public override void Persiapan() {
   Console.WriteLine("Buka Bungkus Kopi Saset");
  }  
  
  public override void Proses() {
   Console.WriteLine("Seduh dengan air panas");
  }  
  
  public override void Selesai() {
   Console.WriteLine("Siap disajikan");
  }
 }
 
 class BikinMieInstans : Template{
  
  public override void Persiapan() {
   Console.WriteLine("Buka Bungkus Mie Instance");
  }
  
  public override void Proses() {
   Console.WriteLine("Masak dengan air mendidih");
  }
  
  public override void Selesai() {
   Console.WriteLine("Siap disajikan");
  }
 }
}  

PHP
<?php
 abstract class Template{
  final function DoIt(){
   $this->Persiapan();
   $this->Proses();
   $this->Selesai();
  } 
  abstract function Persiapan();
  abstract function Proses();
  abstract function Selesai();
 }

 class BikinKopi extends Template{ 
  function Persiapan() {
   echo("Buka Bungkus Kopi Saset< br />");
  } 
  
  function Proses() {
   echo("Seduh dengan air panas<br />");
  } 
  
  function Selesai() {
   echo("Siap disajikan< br />");
  }
 }

 class BikinMieInstans extends Template{
  
  function Persiapan() {
   echo("Buka Bungkus Mie Instance< br />");
  }
  
  function Proses() {
   echo("Masak dengan air mendidih< br />");
  }
  
  function Selesai() {
   echo("Siap disajikan< br />");
  }
 }

 $kopi = new BikinKopi();
 $kopi->DoIt();
  
 echo("-----------------< br />");
  
 $mie = new BikinMieInstans();
 $mie->DoIt();
?>  
Kalo ente perhatikan contoh program diatas ada sebuah abstract class yang mempunyai function DoIt(), pada function itu ada beberapa method local yang dipanggil dan tidak boleh dirubah, itu karena algoritma standarnya seperti itu, sedangkan methon lainnya seperti persiapan(),proses() dan selesai() itu merupakan abstract methon yang bisa diganti isi nya setelah nanti diturunkan pada class child dari absract class ini dan isi nya ya terserah yang penting kalo function DoIt tidak boleh dirubah... begitu konsep kerjanya Pattern template method ini yang udah ane bahas pake Java, C# dan PHP ... udah paham ?? :D kalo gak paham silahkan Comment atau hubungi ane di Facebook, kalo udah paham ya cukup sekian dulu postingan kali ini semoga bermanfaat buat ane dan ente juga para pengunjung blog ini :)

No comments:

Post a Comment