EN İYİ 10 DERS :

Factory Design Pattern

Php Object Oriented Programing Tasarım desenleri(Design Patterns) yazılımcıların karşılaştığı sorunları minumuma indirmek için ortaya çıkmıştır. Creational(Kurucu), Structural(Yapısal), Behavioral(Davranışsal) olmak üzere 3 sınıfa ayrılır. Nesne tabanlı yazılımlar geliştirirken kodların birbirinden maksimum oranda bağımsız olması; yeniden kullanılabilir, kolayca geliştirilebilir ve değişiklik yapmamız gerektiğinde minumum kod yazarak müdahale edebileceğimiz yapıları ortaya çıkarmamızı sağlar. Böylece işgücünden ve zamandan maksimum faydayı elde ederiz.

Bu yazıda kurucu tasarım desenlerinden biri olan factory üzerine bir örnek paylaşacağım. Factory Design Pattern sayesinde sınıfları tek bir arayüz üzerinden oluşturabiliyoruz. Lafı daha fazla uzatmadan bir örnek üzerinden konuyu pekiştirelim. :)

"lib" isminde bir klasör oluşturalım. Bu klasör içinde "Mail.php" ve "Pagination.php" isminde 2 dosya oluşturalım. Bu dosyaların içinde, dosya ismi ile aynı olacak şekilde sınıflar tanımlayalım.

Mail.php :

Class Mail
{
	public function Send()
	{
		return '

Burası Mail Sınıfında Bulunan Send Fonksiyonu

'; } }

Pagination.php :

Class Pagination
{
	public function Initialize()
	{
		return '

Burası Pagination Sınıfında Bulunan Initialize Fonksiyonu

'; } }

"Lib" klasörünün bizim sınıflarımızı topladığımız bir alan olduğunu düşünelim. Mesela bir framework kullanırken tüm sınıfların bir klasör altında toplandığını ve bizim bunları bir sınıf üzerinden uygulamaya dahil ettiğimizi görebiliyoruz. Bizde buna benzer bir yapı ortaya çıkarmaya çalışalım. "Lib" klasörünün dışında bir .php dosyası oluşturalım ve buraya aşağıdaki kodları yazalım.

index.php :

// "load" isminde bir sınıf tanımlıyorum.
Class Load
{

	/*
	 * "Library" isminde bir statik fonksiyon tanımlıyorum.
	 * Bu fonksiyona sınıf ismini yolluyorum.
	 * Sınıf ismiyle dosya ismi aynı olmalı. (Sınıf ismiyle dosya include ettiğim için)
	 * Dosya varsa include edip sınıf objesini geriye döndüyorum.
	 */
	public static function Library($class)
	{
		try
		{
			$dir = 'Lib/' . $class . '.php';
			
			if(file_exists($dir))
			{
				include_once $dir;
				return new $class;
			}
			else
			{
				throw new Exception('

Sınıf Bulunamadı

'); } } catch(Exception $e) { echo $e->getMessage(); } } } // "Pagination" sınıfında bulunan "Initialize" fonksiyonunu çağırıyorum. echo Load::Library('Pagination')->Initialize(); // "Mail" sınıfında bulunan "Send" fonksiyonunu çağırıyorum. echo Load::library('Mail')->Send(); // Olmayan bir sınıf çağırarak hata oluşturalım. Load::library('Test');

Kodlara açıklama satırları ekleyerek hangi satırda, hangi işlemi yaptığımızı açıklamaya çalıştım. Böylece her sınıfı uygulamada ayrı ayrı "new" operatörü ile tanımlamak yerine, "Load" sınıfında bulunan "Library" fonksiyonu aracılığıyla yüklemiş olduk.

Yazıyı Ekleyen Editör :

Yazının Eklenme Tarihi :

İbrahim Hızlıoğlu
04 Ekim 2010 - Pazartesi Günü

Yazının Okunma Sayısı :

Yazının Kategorisi :

2310 Defa Okundu
Php

Bu Yazıya Ait Etiketler :

design pattern, tasarım deseni, yazılım deseni, yazılım desenleri, tasarım desenleri, design patterns, php oop, nesne tabanlı php, nesneye dayalı php, php tasarım desenleri, php yazılım desenleri, php design pattern, Factory Design Pattern, Factory Pattern, Factory tasarım deseni, Factory deseni, Factory yazılım deseni, Üreteç design pattern, Üreteç tasarım deseni, üreteç yazılım deseni