- Beranda
- Website, Webmaster, Webdeveloper
[Share + SourceCode ] Design Pattern (Singleton) Vs Konvensional OOP pada PHP
...
TS
badycool
[Share + SourceCode ] Design Pattern (Singleton) Vs Konvensional OOP pada PHP
Haloo PHP Programmer ,
Newbie mau share Konsep Dan Implementasi OOP Konvensional VS OOP dengan Design Pattern di PHP .
Concern :
1. yg belum belajar OOP, bisa googling dulu
2. yg udh Fasih OOP+Pattern damai" aja ya, kan buat yg mau belajar ini mah
3.
apa itu Design Pattern ?
Design pattern di OOP Konsep dan intinya adalah untuk menyelesaikan masalah" yang sering kali muncul dalam (kasar nya) Coding atau development program. Pattern juga memungkinkan Solusi untuk masalah" yang bersifat Flexible dan dapat dengan mudah digunakan Oleh method,Programmer atau Class lain.
Ada banyak Pattern yg sdh ada, yg akan ane bahas disini: Singleton Pattern, yg paling simple dan banyak dipakai juga.
Salah satu fungsinya, ada untuk mencegah instanisasi berulang dlm suatu resource/class.
Contoh : dalam satu aplikasi/method Calling/Object Calling hanya 1x akses Koneksi ke database saja, jadi tidak setiap pembuatan object baru atau eksekusi fungsi yg sama,koneksi nya diakses berulang.
banyak bacot pusing jg , mending lsg Coding aja dah.
Pertama : Siapkan DB nya
.
kedua : buat Folder di Htdocs misalnya oop, laluy buat file index.php
Jalankan Aplikasi nya , Output nya sbb :
Terlihat kan bedanya, dgn OOP konvensional, Instanisasi terjadi berulang seiring bertambahnya object yg dibuat . dengan pattern , cukup satu Resource /instanisasi saja yg diakses....jadi Hemat Kode, + memory + Resource jg
Newbie mau share Konsep Dan Implementasi OOP Konvensional VS OOP dengan Design Pattern di PHP .
Concern :
1. yg belum belajar OOP, bisa googling dulu
2. yg udh Fasih OOP+Pattern damai" aja ya, kan buat yg mau belajar ini mah
3.
apa itu Design Pattern ?
Quote:
Design pattern di OOP Konsep dan intinya adalah untuk menyelesaikan masalah" yang sering kali muncul dalam (kasar nya) Coding atau development program. Pattern juga memungkinkan Solusi untuk masalah" yang bersifat Flexible dan dapat dengan mudah digunakan Oleh method,Programmer atau Class lain.
Ada banyak Pattern yg sdh ada, yg akan ane bahas disini: Singleton Pattern, yg paling simple dan banyak dipakai juga.
Salah satu fungsinya, ada untuk mencegah instanisasi berulang dlm suatu resource/class.
Contoh : dalam satu aplikasi/method Calling/Object Calling hanya 1x akses Koneksi ke database saja, jadi tidak setiap pembuatan object baru atau eksekusi fungsi yg sama,koneksi nya diakses berulang.
banyak bacot pusing jg , mending lsg Coding aja dah.
Pertama : Siapkan DB nya
Spoiler for db:
Code:
-- phpMyAdmin SQL Dump
-- version 3.4.5
-- [url]http://www.phpmyadmin.net[/url]
--
-- Host: localhost
-- Generation Time: Nov 08, 2012 at 11:38 AM
-- Server version: 5.5.16
-- PHP Version: 5.3.8
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `tes`
--
-- --------------------------------------------------------
--
-- Table structure for table `mhs`
--
CREATE TABLE IF NOT EXISTS `mhs` (
`nim` int(11) NOT NULL,
`namamhs` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
`alamat` text CHARACTER SET latin1
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--
-- Dumping data for table `mhs`
--
INSERT INTO `mhs` (`nim`, `namamhs`, `alamat`) VALUES
(1, 'budy', 'jakrata'),
(2, 'agus', 'tasik'),
(3, 'indra', 'Jogja'),
(4, 'Leny', 'Bali');
-- --------------------------------------------------------
--
-- Table structure for table `user`
--
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) COLLATE latin1_general_ci NOT NULL,
`password` varchar(50) COLLATE latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
--
-- Dumping data for table `user`
--
INSERT INTO `user` (`id`, `username`, `password`) VALUES
(1, 'admin', 'admin');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
kedua : buat Folder di Htdocs misalnya oop, laluy buat file index.php
Quote:
PHP Code:
<?php
echo "<b>Implementasi Class Biasa</b></br><br/>";
class Koneksi {
private static $_dbName;
private static $_dbPass;
private static $_dbHost;
private static $_dbUser;
static $_number_of_instances = 0;
protected static $_konek;
public function __construct() {
self::$_dbName = "tes";
self::$_dbUser = "root";
self::$_dbPass = "";
self::$_dbHost = "localhost";
self::$_number_of_instances ++;
echo 'Koneksi Di Akses :' . self::$_number_of_instances .' kali<br/>';
}
public static function Konek(){
if(!self::$_konek instanceof self){
self::$_konek = @mysql_connect(self::$_dbHost,self::$_dbUser,self::$_dbPass);
}
if(FALSE===self::$_konek){
exit('Koneksi Databse Error');
}
else{
if(TRUE===@mysql_select_db(self::$_dbName,self::$_konek))
return self::$_konek;
else
exit('No databse selected');
}
}
public function getQuery($query) {
self::Konek();
$data = mysql_query($query);
$se = mysql_fetch_object($data);
if($se)
echo '</br>'.$se->namamhs.' '.$se->alamat." <br/>";
}
}
class Query{
private $_sql;
private $_koneksi;
public function __construct($sql) {
$this->_sql = $sql;
$this->_koneksi = new Koneksi();
}
public function sendQuery(){
$this->_koneksi->getQuery($this->_sql);
}
}
$query_1 = new Query("SELECT namamhs,alamat FROM mhs WHERE nim ='1' ");
$query_2 = new Query("SELECT namamhs,alamat FROM mhs WHERE nim ='2'");
$query_3 = new Query("SELECT namamhs,alamat FROM mhs WHERE nim ='3'");
$query_4 = new Query("SELECT namamhs,alamat FROM mhs WHERE nim ='4'");
$query_1->sendQuery();
$query_2->sendQuery();
$query_3->sendQuery();
$query_4->sendQuery();
echo "<br/>---------------------------------------<br/>";
echo " <b> pake Singleton patern</b><br/><br/>";
class Koneksi2 {
private static $_dbName2;
private static $_dbPass2;
private static $_dbHost2;
private static $_dbUser2;
static $_number_of_instances2 = 0;
protected static $_konek2;
protected static $_instance;
public function __construct() {
self::$_dbName2 = "tes";
self::$_dbUser2 = "root";
self::$_dbPass2 = "";
self::$_dbHost2 = "localhost";
self::$_number_of_instances2 ++;
echo 'Di Akses :' . self::$_number_of_instances2 .' kali<br/>';
}
public static function Instance(){
if(!self::$_instance instanceof self){
self::$_instance = new self();
}
return self::$_instance;
}
public static function Konek2(){
if(!self::$_konek2 instanceof self){
self::$_konek2 = @mysql_connect(self::$_dbHost2,self::$_dbUser2,self::$_dbPass2);
}
if(FALSE===self::$_konek2){
exit('Koneksi Databse Error');
}
else{
if(TRUE===@mysql_select_db(self::$_dbName2,self::$_konek2))
return self::$_konek2;
else
exit('No databse selected');
}
}
public function getQuery2($query2) {
self::Konek2();
$data2 = mysql_query($query2);
$se2 = mysql_fetch_object($data2);
if($se2)
echo '</br>'.$se2->namamhs.' '.$se2->alamat." <br/>";
}
}
class Query2{
private $_sql2;
private $_koneksi2;
public function __construct($sql2) {
$this->_sql2 = $sql2;
$this->_koneksi2 = Koneksi2::Instance();
}
public function sendQuery2(){
$this->_koneksi2->getQuery2($this->_sql2);
}
}
$query_1 = new Query2("SELECT namamhs,alamat FROM mhs WHERE nim ='1' ");
$query_2 = new Query2("SELECT namamhs,alamat FROM mhs WHERE nim ='2'");
$query_3 = new Query2("SELECT namamhs,alamat FROM mhs WHERE nim ='3'");
$query_4 = new Query2("SELECT namamhs,alamat FROM mhs WHERE nim ='4'");
$query_1->sendQuery2();
$query_2->sendQuery2();
$query_3->sendQuery2();
$query_4->sendQuery2();
Jalankan Aplikasi nya , Output nya sbb :
Spoiler for gbr:
Terlihat kan bedanya, dgn OOP konvensional, Instanisasi terjadi berulang seiring bertambahnya object yg dibuat . dengan pattern , cukup satu Resource /instanisasi saja yg diakses....jadi Hemat Kode, + memory + Resource jg
Diubah oleh badycool 09-11-2012 08:32
0
3K
Kutip
15
Balasan
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Website, Webmaster, Webdeveloper
23.4KThread•4.7KAnggota
Urutkan
Terlama
Komentar yang asik ya