Tasarım Desenleri – Bölüm 2

Evet arkadaşlar,

Bugün Tasarım Desenleri serimizin (buyurun buraya ) 2. bölümü, Factory Pattern kavramını anlatmaya ve örneklemeye çalışacağım.

Factory pattern nesnenin oluşturulması ile ilgili bir tasarım desenidir. Kısaca aynı abstract ve interfaceden tanımlanan nesnelerin üretimi ile ilgili bir patterndir. Kod tekrarını azaltır ve yönetilebilirliği arttırır, yeni bir nesne üretilirken daha az yere dokunarak kırılımları azaltır. Daha somut bir örnekle açıklayarak daha iyi anlaşılmasını sağlayabiliriz. Örneğin; Ayakkabı üretimi yapan bir fabrikamız olsun. Bu fabrikada ki ürünler bot,sneaker ve krampon olsun. Bu ürünlerin hepsi aynı fabrikada üretilen ayakkabılara dahildir. Yeni bir tür geldiğinde (klasik) ürünü fabrikaya dahil etmemiz yeterli olacaktır. Hadi bunu koda dökelim..

public interface IShoe
{
    void TypeInfo();
}

public class Boot : IShoe
{
    public void TypeInfo(){
        Console.WriteLine("My Type is boot");
    }
}
public class Sneaker : IShoe
{
    public void TypeInfo(){
        Console.WriteLine("My Type is sneaker");
    }
}
public class Spikes : IShoe
{
    public void TypeInfo(){
        Console.WriteLine("My Type is spikes");
    }
}
public enum ShoeType{
    Boot=0,
    Sneaker=1,
    Spikes=2
}
public interface IShoeFactory
{
    IShoe ProduceShoe(ShoeType type);
}
public class ShoeFactory:IShoeFactory
{
    public IShoe ProduceShoe(ShoeType type)
    {
        switch (type)
        {
            case ShoeType.Boot:
                return new Boot();        
            case ShoeType.Sneaker:
                return new Sneaker();
            case ShoeType.Spikes:
                return new Spikes();            
            default:
                return new Boot();
        }
    }
}
class Program
    {
        static void Main(string[] args)
        {
           var shoeFactory=new ShoeFactory();

           IShoe boot=shoeFactory.ProduceShoe(ShoeType.Boot);
           boot.TypeInfo();
           
           IShoe sneaker=shoeFactory.ProduceShoe(ShoeType.Sneaker);
           sneaker.TypeInfo();
           
           IShoe spikes=shoeFactory.ProduceShoe(ShoeType.Spikes);
           spikes.TypeInfo();
        }
    }

Patternleri somutlaştırmanın ve örneklere dökmenin daha kolay anlaşılması açısından faydalı olduğunu düşünüyorum. Bu yüzden bende bu yoldan ilerleyerek factory patterni anlatmaya çalıştım, umarım faydalı olmuştur.

Kalın sağlıcakla …

Kaynak Kod=> Github reposu

Kaynaklar
http://www.canertosuner.com/post/factory-method-pattern-nedir-nasil-kullanilir
https://www.tutorialspoint.com/design_pattern/factory_pattern.htm

Written By

Bir önceki günden daha iyi olmak için çalışarak kendimi geliştirmek, öğrendiklerim ve öğreneceklerim ile yazılım sektöründe büyük ölçekli ve uluslararası projelerde kendimden söz ettirmek istiyorum.

More From Author

You May Also Like

Leave a Reply

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