Thursday 4 April 2013

Pattern Factory Method di Java, C# dan PHP

Factory Method Pattern merupakan salah satu jenis design pattern creational, artinnya pattern model ini menangani pembuatan sebuah object. definisi (pengertian) dari pattern factory method ini secara gampang nya adalah pola yang memungkinkan sebuah method menghasilkan retrun values yang sama walaupun inputnya berbeda :D , contoh kasus nya saat kita mempunyai dua koneksi database, misal Mysql dan Oracle..
dan untuk memilih database kita gunakan sebuah function yang menvalidasi pilihan kita, dan tentunya hasil dari validasi dari pemilihan tadi akan bertipe sama yaitu koneksi... dan itu akan di jadikan sebagai nilai kembalian dari function falidasi tadi... gimana cara nya ?? Factory pattern yang akan menjawab masalah ini :D hehehee dan berikut implementasi atau penerapan design pattern factory di Java, C# dan PHP

Java
package Factory;

public class MainClass {
 public static void main(String[] args) {
  SelectConnection pilih = new SelectConnection("Oracle");
  Connection conn = pilih.GetConnection();
  conn.CreateConnection();
 }
}

interface Connection{
 public void CreateConnection();
}

class Mysql implements Connection{
 @Override
 public void CreateConnection() {
  System.out.println("Im Mysql Connection");
 }
}

class Oracle implements Connection{
 @Override
 public void CreateConnection() {
  System.out.println("Im Oracle Connection");
 }
}

class SelectConnection{
 public SelectConnection(String connection) {
  this.connection = connection;
 }
 
 private String connection;
 
 public Connection GetConnection(){
  if(this.connection.toLowerCase().equals("mysql")){
   return new Mysql();
  }else{
   return new Oracle();
  }
 }
}  


C#
using System;

namespace Factory
{
 class Program
 {
  public static void Main(string[] args)
  {
   SelectConnection pilih = new SelectConnection("Oracle");
   Connection conn = pilih.GetConnection();
   conn.CreateConnection();
   
   Console.ReadKey(true);
  }
 }
 
  interface Connection{
  void CreateConnection();
 }
 
 class Mysql : Connection{
  public void CreateConnection() {
   Console.WriteLine("Im Mysql Connection");
  }
 }
 
 class Oracle : Connection{
  public void CreateConnection() {
   Console.WriteLine("Im Oracle Connection");
  }
 }
 
 class SelectConnection{
  public SelectConnection(String connection) {
   this.connection = connection;
  }
  
  private String connection;
  
  public Connection GetConnection(){
   if(this.connection.ToLower() == "mysql"){
    return new Mysql();
   }else{
    return new Oracle();
   }
  }
 }
}  

PHP
<?php
 interface Connection{
  function CreateConnection();
 }
 
 class Mysql implements Connection{
  function CreateConnection(){
   echo "Im Mysql Connection< br />";
  }
 }
 
 class Oracle implements Connection{
  function CreateConnection(){
   echo "Im Oracle Connection< br />";
  }
 }
 
 class select_connection{
  public function __construct($connection){
   $this->connection = $connection;
  }
  
  private $connection;
  
  function GetConnection(){
   if($this->connection == "Mysql"){
    return new Mysql();
   }else{
    return new Oracle();
   }
  }
 }
 
 $pilih  = new select_connection("Oracle");
 $connection = $pilih->GetConnection();
 $connection->CreateConnection();
?>  
untuk mengimplementasikan Desain pattern factory ini kita membutuhkan interface untuk membantu penyamaan object, kemudian interface ini kita turunkan ke class Mysql dan Oracle denga begitu kita bisa menyamakan type nya :D .. kemudina tinggal menvalidasi saja... paham kan ?? mudah kok.... dan begitulah penerapan Factory pattern pada Java, C# dan PHP... sekian untuk tulisan tutorial desain pattern kali ini semoga bermanfaat :)

1 comment: