Harun Özer


Proje veya dijital katalog yaptırmak için
iletişim formu doldurabilirsiniz..

<< Builder Tasarım Deseni - Builder Design Pattern | Prototype Tasarım Deseni - Prototype Design Pattern>>

Factory Method Tasarım Deseni - Factory Method Design Pattern

Yazar harunozer 21 October 2012

Factory Method Tasarım Deseni - Factory Method Design Pattern Factory Method (Fabrika metod) tasarım deseni creational grubununa ait, aynı arayüzü kullanan nesnelerin üretiminden sorumlu tasarım desenidir. dofactory.com a göre en sık kullanılan tasarım desenlerinden factory method tasarım deseni yapı olarak abstract factory desenine çok benzer.

Factory Method tasarım deseni aynı abstract sınıfı veya arayüzü uygulayan sınıfların üretiminden sorumludur. Kullanımı 2 şekilde olabilir. Birinci kullanım şeklinde nesne üretiminden sorumlu bir class olur ve bu sınıftaki metoda gönderilen parametre ile üretilecek sınıfın türü belirlenir. İkinci kullanım şeklinde ise her nesne üretimi için aynı arayüzü kullanan sınıflar oluşturulur ve hangi sınıftan nesne istenirse belirli bir sınıfı verir. Abstract method tasarım deseni abstract factory tasarım deseni ile çok benzer bir yapıdadır. 2 kullanım için de UML diyagramları aşağıdadır.

1.Kullanım UML Diyagramı

2.Kullanım UML Diyagramı

Örneğin; tablo ve grafik rapor veren bir uygulamamız olsun. İlk önce rapor sınıflarımızın türetileceği bir arayüz tanımlayalım. Raporgrafik ve raportablo sınıflarımızı bu arayüzden türetelim. Son olarak da istediğimiz tipteki rapor sınıfının referansını veren bir sınıf ve metodu tanımlayalım. Uygulamamızın class diyagramı aşağıdaki gibidir.

 

İlk olarak product sınıflarımızı oluşturalım.
 
/// <summary>
/// Product Interface
/// </summary>
public interface IRapor
{
    void Olustur();
}
 
/// <summary>
/// Concrete Product
/// </summary>
public class RaporTablo : IRapor
{
    public void Olustur()
    {
        Console.WriteLine("Tablo şeklinde rapor");
    }
}
 
/// <summary>
/// Concrete Product
/// </summary>
public class RaporGrafik : IRapor
{
    public void Olustur()
    {
        Console.WriteLine("Grafik şeklinde rapor");
    }
}
 
Şimdi de istediğimiz product sınıfının örneğini elde edeceğimiz factory metodumuzu oluşturalım.
/// <summary>
/// Factory Method
/// </summary>
/// <param name="raporTip">Rapor tipi</param>
/// <returns>İstenilen tipdeki rapor referansı (product)</returns>
public IRapor RaporFactory(RaporTip raporTip)
{
    IRapor rapor = null;
    switch (raporTip)
    {
        case RaporTip.Tablo:
            rapor = new RaporTablo();
            break;
        case RaporTip.Grafik:
            rapor = new RaporGrafik();
            break;
        default:
            break;
    }
    return rapor;
}
 
Oluşturduğumuz deseni aşağıdaki gibi kullanabiliriz.
 
static void Main(string[] args)
{
    Creator1 RaporCreator = new Creator1();
 
    IRapor rapor = RaporCreator.RaporFactory(RaporTip.Grafik);
    rapor.Olustur();
 
    rapor = RaporCreator.RaporFactory(RaporTip.Tablo);
    rapor.Olustur();
}
 
Aşağıdaki linkden her iki şekilde de yapılmış örnek kodları indirebilirsiniz.
 

FactoryMethodSample.rar

Tam Sayfa
Tags tasarım desenleri,
Kategoriler c#.net, Tasarım Desenleri
İşlemler
Bu Makale 3  Kez Beğenildi.
İsim :    
e-Mail :    
Web Site :  
İmage :  
Güvenlik Kodu :  

Güvenlik Resmi
Resmi Yenile
    
Yorum :  
Tasarım Desenleri ve Mimarileri