Factory Design Pattern Kullanımı

Posted Tarihi: 11 Ekim 2014 | Yazar: boskefm | Kategori: PHP | Etiketler: factory design pattern, php, tasarım deseni,web |Yorum Bırak
Genelde çoğu programlama dillerinde duymuş olduğumuz design pattern yani tasarım deseni dediğimiz yapıdan bahsedeceğim.Uygulama oluşturma sırasında sağladığı pratiklikler ve hata oluşumunu azaltması gibi sebeplerden kullandığımız tasarım desenlerinin faydası oldukça fazla.Pattern’lar hakkında detaylı bilgi için şurayı okuyabilirsiniz.Bu yazıda Factory Design Pattern’dan bahsedeceğim.Bu tasarım deseni sayesinde tek bir arayüz yaratarak diğer class’lara bu arayüzden ulaşabileceğiz.Öncelikle bir factory pattern sınıfı yaratarak başlayalım.

class Pattern
{

public static function factory($classname)
{
try
{
$class_dir=’library/’.$classname.’.php’;
if(file_exists($class_dir))
{
include_once($class_dir);
return new $classname();
}
else
{
throw new Exception(“Bu isimde bir class yok”);
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
}
}
?>

Oluşturduğumuz sınıfta, static olarak belirttiğimiz factory fonksiyonu parametre olarak aldığı değişken adında bir sınıfın belirttiğimiz dizinde olup olmadığına bakar.Eğer varsa bu class’ı include edip,  nesneyi döndürür.Yoksa da,  hata fırlatma olayı gerçekleşir.Şimdi de bir class oluşturup o class’a, Pattern sınıfını dahil ettiğimiz sınıftan ulaşalım.

class deneme
{
public $deger=’Display metodu calıstı’;
function __construct()
{
echo ‘Deneme sınıfının yapılandırıcısı calıstı’;
}
function display()
{
echo $this->deger;
}
}
?>
Oluşturduğumuz bu deneme.php adlı bu dosyayı library dizinine atıyoruz.Sonra da pattern class’ını kullanarak tek bir arayüz üzerinden deneme sınıfına ait nesne oluşturuyoruz.Dönen nesneyle de deneme class’ının display fonksiyonunu çağırıyoruz.

include_once(‘pattern.php’);
Pattern::factory(‘deneme’)->display();
// üst satırdaki kod ile deneme.php dosyasını dahil edip,
// deneme sınıfından nesne döndürdük ve display() metodunu çalıştırdık.

?>
Kodlarda da görüldüğü gibi bize zaman ve pratiklik kazandıran factory design pattern, kullanacağımız sınıfları tekrar tekrar include etmekten de kurtarıyor.

NOT: Oluşturduğunuz class’larla dosya adını aynı vermeyi unutmayın.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir