Wednesday, 3 April 2013

Pattern Singleton di Java, C#, PHP

Design Pattern Singleton udah ane bahas pada postingan sebelumnya tetapi hanya menggunakan Java, Kali ini ane bahas dengan Java, C# dan PHP sesuai janji ane pada postingan sebelum nya... dan ane udah jelasin juga pengertian Pattern Singleton di postingan sebelumnya dan apa manfaat dan kegunaannya... sedikit mengulang cerita yang lalu :D .. singleton adalah algoritma yang digunakan untuk pembentukan suatu object yang membatasi pembentukannya hanya satu kali..
Mungkin ente agak bingung dari definisi ini ya ? seperti yang ane bilang tadi (sedikit mengulang), contoh kasus singleton ini loo... ente tau kan cara nya bikin Instance object dari suatu class ?? tentunya memakai keyword "new" ... inget ? itu namanya pembentukan instance object... kadang saat kita membuat sebuah aplikasi kita bisa berulang kali membuat instance object yang sama dari sebuah class dan itu tidak efisien.. karena bisa terjadi pemborosan memory... dalam hal ini ane coba mengambil contoh yang sama seperti postingan sebelumnya yaitu koneksi database, perhatikan gambar berikut


jika ente lihat pada gambar diatas ada 3 buah koneksi ke database dan tiap koneksi memakan memory 5 KB. dan itu terjadi karena pencetakan object dari koneksi lebih dari satu, maka di butuhkan limitasi untuk mengefisiensikan koneksi database, artinya cukup dengan satu koneksi saja untuk menghubungkan ke database :D kalo digambarkan seperti ini


bukan kah ini lebih efisien ?? tentunya iya :D ... dengan pattern Singleton kita bisa implementasi algoritma  seperti ini... oia, untuk penggunaan Pattern ini tidak hanya untuk mengkoneksikan ke database, tetapi bisa dilakukan untuk yang lainnya dan sesuai kebutuhan... dan contoh program penerapan Design pattern singleton pada Java, C# dan PHP seperti ini


Java

package Singleton;
public class MainClass {
 public static void main(String[] args) {
  Connection conn_1 = Connection.GetInstance();
  conn_1.PrintText("Select * from mahasiswa");
  Connection conn_2 = Connection.GetInstance();
  conn_2.PrintText("Select * from dosen");
 }
}

class Connection{
 static int counter = 0;
 static Connection connection = null;
 public Connection() {  
  Connection.counter++;
  System.out.println("Object instance class Connection ke "+Connection.counter);
 }
 
 public static Connection GetInstance(){
  if(Connection.connection == null){
   Connection.connection = new Connection();
  }
  
  return Connection.connection;
 }
 
 public void PrintText(String text){
  System.out.println(text);
 }
}  


C#
using System;
namespace Singleton
{
 class Program
 {
  public static void Main(string[] args)
  {
   Connection conn_1 = Connection.GetInstance();
   conn_1.PrintText("Select * from mahasiswa");
   Connection conn_2 = Connection.GetInstance();
   conn_2.PrintText("Select * from dosen");
   Console.ReadKey(true);
  }
 }
 
 class Connection
 {
  static int counter = 0;
  static Connection connection = null;
  public Connection() {  
   Connection.counter++;
   Console.WriteLine("Object instance class Connection ke "+Connection.counter);
  }
  
  public static Connection GetInstance(){
   if(Connection.connection == null){
    Connection.connection = new Connection();
   }
   
   return Connection.connection;
  }
  
  public void PrintText(String text){
   Console.WriteLine(text);
  }
 }
}  

PHP
<?php
 class Connection{
  public function __construct(){
   self::$counter++;
   echo "Object instance class Connection ke ".self::$counter."< br />< br />";
  }
  
  public static $counter  = 0;
  public static $connection = null;
  
  public static function GetInstance(){
   if(self::$connection == null){
    self::$connection = new Connection();
   }
   return self::$connection;
  }
  
  public function PrintText($text){
   echo $text.'< br />';
  }
 }
 
 $conn_1 = Connection::GetInstance();
 $conn_1->PrintText("Select * from mahasiswa");
 $conn_2 = Connection::GetInstance();
 $conn_2->PrintText("Select * from dosen");
?>  

Mudah bukan penerapan dan implementasi singleton di Java, C# dan PHP nya ? :D ... sebenarnya hanya memanfaatkan static method dan statement if saja untuk penerapan pattern Singleton ini... oke gan, untuk postingan kali ini cukup sampai disini dulu... Insya Alloh besok masi membahas Design pattern.. semoga bermanfaat... keep smile and happy cooding :)

No comments:

Post a Comment