Bir Tasarım Şablonu: Singleton Pattern; nedir ne değildir ? |
||||||
PHP ile singleton pattern şablonuyla class tasarlayıp kullanalım. Önce biraz açıklama yapayım:
Tasarım şablonlarından biri olan Sigleton Pattern class yaratmakla ilgili bir kuraldır. Kural şudur: Class 'ın sadece bir kere instance'ı yaratılabilmesine izin vermek. Bunu da if else kontrolüyle yapabiliriz. Mesela bir bağlantı nesnesini her defasında proje içerisinde new komutu ile yaratmak gereksiz hafıza işgali yapar. Bu yüzden her hangi bir class'ı Singleton Pattern ile oluşturmak istiyorsak şuna benzer bir kontrol oluşturmalıyız: if (!isset($nesne)) return $nesne= new class_ismi(); else return $nesne;Bu kontrolü yazacağımız class içerisinde singleton fonksiyonuna yerleştirip __construct() motudunu ise boş bıraktığımızda classımızı singleton pattern ile tasarım yapmış oluyoruz. Bununla ilgili bir örnek yapalım: class myclass { // classın dışardan erişimini private ile kısıtlıyoruz. private static $instance; // Singleton Pattern'da classlar static değişken içerisinde barındırılır. // Private kullanarak new komutunu ile classı yaratmayı engelliyoruz. private function __construct() { } // new myclass yerine kullancağımız singleton fonksiyonu public static function singleton () { if (!isset($instance)) return self::$instance=new myclass; else return self::$instance; } // örnek bir dışarden erişimi olan fonksiyon. public function getdata() { return "some data..."; } } // classı new komutu ile yaratamadığımız için singleton fonksiyonunu kullanıyoruz. $class =& myclass::singleton(); // aşağıdaki komut some data yazdırır. echo $class->getdata();Singleton Pattern yüzde yüz nesne tabanlı projeler yaparken daha elverişli oluyor. Buna en güzel örnek MVC'dir. MVC zaten mantık olarak Model nesnesi oluşturmamızı gerektirdiği için Singletton Pattern Tasarım Şablonu kullanmak şart oluyor. Not: Eğer var olan classları singleton pattern ile yaratmak istiyorsak en baştaki if else kontrolünü kullanabiliriz. Yararlandığım kaynak : Uzmanlar için PHP (Mehmet Şamlı) |
||||||
|
||||||
|
May 2013 (1)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
NATURAL JOIN , JOIN ON ..
İş ilanı (Flash ve AS3 ..
PHP ile JSON verisi ya ..
Web programlamayla ilg ..
XAMPP Server (Apache, ..
ASP.NET ve PHP ortamın ..
Bir Tasarım Şablonu: S ..
Büyük boyutlu tablolar ..
Essential C# 3.0 E-boo ..
MySql veritabanı bağla ..
İş ilanı (Flash ve AS3 ..
PHP ile JSON verisi ya ..
Web programlamayla ilg ..
XAMPP Server (Apache, ..
ASP.NET ve PHP ortamın ..
Bir Tasarım Şablonu: S ..
Büyük boyutlu tablolar ..
Essential C# 3.0 E-boo ..
MySql veritabanı bağla ..
Etiketler
| .net | Ajax | Asp.net | Binary-data | Dönem | Fonksiyon-yaratmak | Galeri | Görev | İnsert | İş | Jquery | Mdb2-modülü | Mysql | Mysql-fonksiyonu | Önerdiğim-kitaplar | Örnek | Pear | Php | Prepare | Sunucu-kontrollleri | Türkçe-karakter | Update-panel | Verimli-ve-yararlı | Veritabanı | Yazar |arama
Loading
sosyal




