>>
you're reading...
Info Kampus, Tutorial

Penerapan Design Pattern Singleton

Huft….Udah beberapa minggu ini sangat membingungkan tentang sebenarnya apa itu design pattern dan bagaimana sebenarnya design pattern ketika diterapkan dalam Object Oriented.

Akhirnya setelah berkeliling di mbah google, saya ketemu dengan 2 blog yang cocok banget dengan yang ingin saya tau. Yaitu blog ibu Yani Widyani dan blog dengan alias Gede Lumbung. Berkat ibu Yani saya tau lebih banyak tentang apa sebenarnya itu design pattern dan berkat sodara Gede Lumbung saya mengerti bagaimana menerapkan design pattern itu sendiri kedalam pemmrograman berbasis objek oriented.

Nah Singleton Pattern merupakan salah satu pattern yang membuat otak saya cerah sebenarnya apa itu design pattern. Klo mau tau apa itu singleton pattern, silahkan baca artikel yang saya ambil dari blog Gede Lumbung, semoga artikel ini membantu.

Design Pattern adalah sebuah solusi untuk masalah umum yang sering kita temui dan lakukan, yang membentuk sebuah pola (pattern) tertentu. Sehingga dibutuhkan sebuah desain yang bisa memanajemen pola tersebut, agar kode program lebih mudah dibaca, dipelihara, dan yang paling penting bisa diterapkan dalam sebuah tim kerja dalam skala besar. Dengan design pattern inilah nantinya terbentuk API yang bisa digunakan kembali oleh developer pihak ketiga.

Ada beberapa design pattern yang ada saat ini, diantaranya Singleton, Adapter, Registry, Factory, Observer dan masih banyak yang lainnya. Pada postingan kali ini, saya akan menjelaskan sedikit tentang penerapan design pattern singleton di PHP. Design pattern yang hampir selalu digunakan ini, berfungsi untuk mencegah terjadinya inisialisasi lebih dari satu kali dari sebuah class. Tujuannya untuk memangkas penggunaan memori. Biasanya diterapkan pada koneksi database dan pemanggilan library/plugin yang cukup diinisialisasi sekali saja.

Di atas ini, saya ambil contoh pada studi kasus ketika kita akan menggunakan class Koneksi. Dimana objek Koneksi dibuat sebanyak 3 kali, padahal sebenarnya cukup sekali saja untuk membuat objek Koneksi. Sama-sama menggunakan fungsi mysql_connect() (contohnya pada mysql), yang berbeda hanya perintah query. Otomatis gambar di atas sangat tidak efisien, karena memori harus menampung 3 objek Koneksi yang sama.

Gambar di atas adalah contoh alur program jika menggunakan design pattern singleton. Perintah-perintah query cukup menggunakan 1 objek Koneksi yang sudah diinisialisasi ketika pertama kali class Koneksi diakses. Di bawah ini, saya coba untuk membuat contoh penerapannya pada bahasa pemrograman PHP.

<?php
class Koneksi {
	private $_dbase;
	//menyimpan objek Koneksi
	private static $_instance;
	//menghitung berapa kali objek diakses
	 private  static $_akses_koneksi = 0; 

	private function  __construct()
	{
		$this->_dbase = "mysql";
		//ditambahkan 1, setiap kali class objek diakses
		self::$_akses_koneksi +=1;
		echo "<p>Mengakses koneksi sebanyak ".self::$_akses_koneksi." kali</p>";
	}
	public static function cekInstance()
	{
		//jika objek $_instance kosong
		if(is_null(self::$_instance))
		{
			//buat objek baru
			self::$_instance = new self();
        	}
		return self::$_instance;
	}
	public function prosesQuery($query)
	{
		//menampilkan data, melalui objek Koneksi
		echo "
".$query . "

";
	}
}

class AmbilQuery{
	private $_isi_query;
	private $_koneksi;
	public function  __construct($query)
	{
        	$this->_isi_query = $query;
		//mengecek instance dari class Koneksi
		$this->_koneksi = Koneksi::cekInstance();
	}
	public function inQuery()
	{
		$this->_koneksi->prosesQuery($this->_isi_query);
	}
}

//mencoba menampilkan data,
$q1 = new AmbilQuery("select * tbl_produk where kode_produk='C10'");
$q1->inQuery();
$q2 = new AmbilQuery("insert into tbl_produk values ('C14','Pasta Gigi','10000')");
$q2->inQuery();

?>

Dan ketika source code di atas dijalankan, maka akan terlihat counter untuk menghitung berapa kali class Koneksi diakses. Jika berjalan dengan benar, maka akan muncul pesan bahwa koneksi diakses sebanyak 1 kali.

About Gootekno

Write to share, to increase knowledge and friendship

Discussion

One thought on “Penerapan Design Pattern Singleton

  1. sip gan..
    ane baru blajar oop nih..
    bnyak bgt istilah2…:D

    Posted by bok | 09-05-2012, 8:26 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: