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ı) |
||||||
|
||||||
|
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)
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)
İş ilanı (Flash ve AS3 ..
Jquery ile dinamik tab ..
Jquery ve Seçiciler (J ..
Cookie v.s. Session | ..
PHP Pear MDB2 modülü i ..
ASP.NET ve Google Ajax ..
NATURAL JOIN , JOIN ON ..
Web programlamayla ilg ..
PHP 5 ile OOP ( Object ..
Jquery ve PHP ile Ajax ..
Jquery ile dinamik tab ..
Jquery ve Seçiciler (J ..
Cookie v.s. Session | ..
PHP Pear MDB2 modülü i ..
ASP.NET ve Google Ajax ..
NATURAL JOIN , JOIN ON ..
Web programlamayla ilg ..
PHP 5 ile OOP ( Object ..
Jquery ve PHP ile Ajax ..
Etiketler
| Apache | Blog | Cookie | Çerez | Düzenli-ifade | Google | Karakter | Mysql | Oturum | Pagerank | Parse | Php | Regular-expression | Rewrite | Rewriterule | Select | Seo | Seo-optimizasyon | Session | Site | String | Url | Url-rewriting | Veritabanı | View | Ziyaretçi |arama
Loading

Zülküf Küçüközer
30th August 2009
Tasarım şablonu | Singleton patten | Php | Class
591
Tasarım
XHTML