Malam minggu datang lagi dan kembali sebagai seorang jomblo sejati, saya nangkring di ITSolution untuk numpang ngNet + mengerjakan beberapa tugas untuk UTS besok. Ada beberapa fenomena yang terjadi disini, diantaranya teman-teman saya yang mulai mojok dengan pacar atau gebetannya dan beberapa lagi yang sedang dilanda sindrom GALAU 😀 masalah hati. Sindrom GALAU akan skripsi juga menyerang beberapa teman MABA (MAhasiswa BAsi) lainnya. Ngomong-ngomong soal skripsi, saya jadi ingat lagi dengan target skripsi yang ingin saya tempuh tahun depan. Ingat juga dengan sebuah judul skripsi yang terdapat materi design pattern di dalamnya.
“Apaan tuh design pattern..???”. 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. “Bagaimana, ruwet kah…???”. Kalau ruwet, artinya rekan-rekan sudah berusaha untuk memahami apa yang saya jelaskan di atas :D. Kalau masih ruwet, silahkan dibaca dan dipahami kembali. OK deh, sekian dulu postingan saya tentang design pattern singleton ini, dan akan saya lanjutkan untuk menerapkan design pattern yang lainnya di postingan selanjutnya.
Happy Blogging and Keep Coding
Cheerrrss….!!!!
asli klu tuk masalah seperti ini saiia cuma bisa sebatas ‘ckckckckck’ ajja kang.. salut!! keren!!! lebih karena saiia gag ngertinya kang 🙁
Pertamax gan….
Ajib thank dari Maba Galau 😀
Pertamax gan….
Ajib thank dari Maba Galau
+1
mahasiswa mahasiswa pencari tugas pasti sangat bersyukur ada kamu bro.. jadi ga perlu nyari bahan2 tugas kemana2.. hehe
Pingback: | » Tutorial Design Pattern : Penerapan Design Pattern Registry di PHP | Ng`Blog Biar Gak GobloG – BlogNya Gede Lumbung |
Habis ini ulas juga design pattern “dependency injection” De. dependency injection ini konsepnya lebih bagus dibandingkan dgn factory. Coba aja wis…
TђƋήK••ƴ<3Ʋ••({})({}) for the info
Membantu bgt gan…
gan ane mau tanya” lebih rinci nie, boleh ga gan minta nomor hp’y?
asyik design pattern,,,,
lebih enak dari kue tart nih,,
hahahahah
makasih gan
Makasi mas gede … Saya baru belajar oop nih …
Bagus .. Penjelesannya easy 🙂 terimakasi.
izin dowload dan tks bwt contoh web desain nya bozz, bagus bgd ddh buat pembelajaran dan jga bisa di jadikn bahan tugas gtu, brsyukur bgd dh,, hhee,,,