tasarım desenleri logo

Factory Method(Fabrika Yordam) Tasarım Deseni

Merhaba arkadaşlar, daha önceki yazımda Singleton tasarım desenini anlattım. Bu yazımda da Fabrika Yordam(metod) tasarım desenine bakacağız.

Fabrika Yöntemi, nesne oluşturmak için bir arabirim tanımlayan, alt sınıfların hangi sınıfı başlatacağına karar vermesine izin veren yaratıcı bir modeldir.

Fabrika yöntemi şablonunu kullanmak için en iyi zaman, tek bir varlığın birden fazla varyasyonuna sahip olduğunuz zamandır.

Örnek olarak bir telefon modelinin birkaç vasyasyon/sürüm(32/64/128) gibi farklı farklı varyasyonları bulunuyor olabilir. Bunları oluşturmak için ana bir telefon fabrikası metodu(telefonFabrikasi) oluşturmamız gerekmektedir. Bu arabirim kullanılarak her alt sınıfın telefonFabrikası karşılığını “creat” (“oluştur”) yöntemini uygulayarak belirli bir telefon oluşturulur.

Fabrika yordam kavramını daha iyi anlamak için bir gerçek dünyadaki bir iş ajansı düşünebiliriz. Bu ajans müşterilerinin açık pozisyonları için eleman almasına yardımcı olur. Müşteri ise pozisyon için gerekli kriterleri sağlar ve daha sonra adayların değerlendirilmesini ajansa bırakır. İşe alım ajansı işe adayların bu iş için uygunluklarını denetler ve uygun kriterleri açık olan pozisyonlara yerleştirir.

Bu durumda iş ajansı fabrika yordam gibi davranır. İstemcinin, nasıl oluşturulduklarının ayrıntılarını bilmeden yeni nesneler oluşturmasını sağlar.

Oluşturma mantığını istemciye maruz bırakmadan nesneler oluştururuz ve ortak bir arabirim (istihdam ajansı) kullanarak yeni oluşturulan nesnelere başvururuz.

Nesne Oluşturma, nesneleri oluşturmak için fabrika yöntemini uygulayan alt sınıflara devredildiği için fabrika yöntemi kalıtıma dayanır.

Fabrika yordam, genellikle mimari modeli bir dizi uygulama için standartlaştıran, ancak bireysel uygulamaların kendi nesnelerini ve örneklemelerini tanımlamasına izin veren çerçeveler oluştururken kullanılır.

Fabrika, ortak arayüzü olan nesnelerin oluşturucusudur.

[the_ad id=”1292″]

C# ile şekil oluşturma fabrika yordam örneği aşağıdaki kodda verilmiştir.

namespace SoloLearn
{
    interface IShape
    {
        void Ciz();
    }
    
    class Kare: IShape
    {
        public void Ciz()
        {
            Console.WriteLine("Kare!!!");
        }
    }
    
    class Daire: IShape
    {
        public void Ciz()
        {
            Console.WriteLine("Daire!!!");
        }
    }
    
    class Ucgen: IShape
    {
        public void Ciz()
        {
            Console.WriteLine("Ucgen!!!");
        }
    }
    
    // Factory class
    class ShapeFactory
    {
        // Factory products
        public enum Type
        {
            Kare,
            Daire,
            Ucgen
        }
        
        // Factory method
        public static IShape Olustur(Type type)
        {
            switch(type)
            {
                case Type.Kare:
                    return new Kare();
                case Type.Daire:
                    return new Daire();
                case Type.Ucgen:
                    return new Ucgen();
                default:
                    return null;
            }
        }
    }
    
    // Test program
    class Program
    {
        static void Main(string[] args)
        {
            IShape kare = ShapeFactory.Olustur(ShapeFactory.Type.Kare);
            
            IShape daire = ShapeFactory.Olustur(ShapeFactory.Type.Daire);
            
            IShape ucgen = ShapeFactory.Olustur(ShapeFactory.Type.Ucgen );
            
            kare.Ciz();
            daire.Ciz();
            ucgen.Ciz();
        }
    }
}

Umarım anlaşılır olmuştur.

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir