Programlamada Tasarım Desenleri #3 — Abstract Design Pattern (C# .NET)

Tasarım desenleri (Design Patterns), yazılım geliştirme sürecinde karşılaşılan belli başlı problemleri çözmek için en iyi uygulamaları sunan şablonlardır. Bu yazı dizimizin ikinci bölümünde, Abstract Design Pattern yani Abstract Factory Design Pattern‘i detaylıca inceleyeceğiz. 🎯

Bu yazı kapsamında C# .NET platformunda gerçek hayattan örneklerle konuyu ele alacak, aynı zamanda kod örnekleri ve diyagramlarla zihninizde oturmasına yardımcı olacağız.

Çeşitli mobilya tasarımlarını gösteren dijital bir illüstrasyon

Abstract Factory Design Pattern Nedir?

Abstract Factory Design Pattern, birbiriyle ilişkili nesne ailelerinin oluşturulması için kullanılan bir creational (oluşturucu) tasarım desenidir. Bu desen, istemcinin (client) somut sınıflar hakkında bilgi sahibi olmadan ilgili nesneleri üretmesine olanak sağlar.

Bu yapı sayesinde, geliştirdiğiniz uygulamalarda bağımlılıkları azaltarak daha esnek ve ölçeklenebilir sistemler oluşturabilirsiniz.

Ne Zaman Kullanılır?

  • Sisteminizde birbiriyle ilişkili nesne kümeleri varsa ve bu nesnelerin birlikte çalışması gerekiyorsa,
  • Tanımlanmış bir arayüz üzerinden farklı ürün varyasyonlarını oluşturmak istiyorsanız,
  • Yeni ürün türleri eklendiğinde mevcut kodu bozmadan sisteminizi genişletmek istiyorsanız,

Abstract Factory Design Pattern kullanmak doğru tercih olacaktır.

Gerçek Hayattan Bir Analoji: Mobilya Üreticisi

Farz edelim ki IKEA gibi bir mobilya firmasısınız. Evin her odası için farklı mobilya setleri üretmek istiyorsunuz — Modern, Klasik gibi. Bu noktada bir sandalye, masa ve koltuk takımı belirli bir tarza ait olmalı.

İşte tam burada Abstract Factory devreye giriyor.

Abstract Factory Design Pattern diyagramı

C# ile Abstract Factory Design Pattern Örneği

Aşağıda C# ile oluşturulmuş soyut ve somut sınıflarla örnek bir yapı gösterilmiştir.

1. Ürün Arayüzleri: ISandalye, IMasa

public interface ISandalye
{
    void Otur();
}

public interface IMasa
{
    void Kullan();
}

2. Concrete Product: Modern mobilyalar

public class ModernSandalye : ISandalye
{
    public void Otur()
    {
        Console.WriteLine("Modern Sandalyeye oturuldu.");
    }
}

public class ModernMasa : IMasa
{
    public void Kullan()
    {
        Console.WriteLine("Modern Masa kullanılıyor.");
    }
}

3. Abstract Factory Arayüzü

public interface IMobilyaFactory
{
    ISandalye SandalyeUret();
    IMasa MasaUret();
}

4. Concrete Factory: Modern Factory

public class ModernMobilyaFactory : IMobilyaFactory
{
    public ISandalye SandalyeUret()
    {
        return new ModernSandalye();
    }

    public IMasa MasaUret()
    {
        return new ModernMasa();
    }
}

5. Client Sınıfı

public class EvDekorasyonu
{
    private readonly ISandalye _sandalye;
    private readonly IMasa _masa;

    public EvDekorasyonu(IMobilyaFactory factory)
    {
        _sandalye = factory.SandalyeUret();
        _masa = factory.MasaUret();
    }

    public void Goster()
    {
        _sandalye.Otur();
        _masa.Kullan();
    }
}

6. Program.cs

class Program
{
    static void Main(string[] args)
    {
        IMobilyaFactory factory = new ModernMobilyaFactory();
        EvDekorasyonu dekorasyon = new EvDekorasyonu(factory);
        dekorasyon.Goster();
    }
}

Görsel Anlatım: Class Diyagramı

Aşağıda Abstract Factory Pattern’in görsel diyagramı yer almaktadır:

📌 Not: Görsel için WordPress üzerinde şu görseli ekleyebilirsiniz:

Factory Method ve Abstract Factory desenlerini karşılaştıran bir görsel

Abstract Factory Pattern’in Avantajları ✅

  • ✔️ Kodunuzu soyut sınıflar üzerinden yazmanız, yeni ürün tiplerinin kolayca eklenebilmesini sağlar.
  • ✔️ Açık – Kapalı prensibi (Open-Closed Principle) ile uyumlu çalışır.
  • ✔️ Ürün aileleri arasında tutarlılık sağlar.

Dezavantajları ⚠️

  • ❌ Yeni ürün türlerinin eklenmesi kolay olsa da, yeni ürün aileleri eklemek zordur.
  • ❌ Kod yapısı biraz karmaşık hale gelebilir.

Abstract Factory Design Pattern Hakkında Sık Sorulan Sorular

🧠 Abstract Factory ile Factory Method arasındaki fark nedir?
Factory Method tek bir ürün oluşturmak için kullanılırken, Abstract Factory bir ürün ailesini oluşturmak için kullanılır.

👨‍💻 Gerçek projelerde nerelerde kullanılır?
Tema desteği olan UI uygulamalarında (örneğin Windows Forms), veri erişim katmanlarında farklı veritabanlarına göre adapter seti oluştururken kullanılır.

Sonuç 🔍

Abstract Factory Design Pattern, yazılım projelerinde esneklik ve sürdürülebilirlik sağlamak için güçlü bir araçtır. Özellikle birbirine bağlı nesneleri üretmek gerektiğinde, bu deseni kullanmak kodunuzu daha temiz, yönetilebilir ve genişletilebilir hale getirir.

Eğer C# ile geliştirme yapıyorsanız, bu deseni mutlaka proje yapılarınızda düşünmelisiniz. Küçük uygulamalarda karmaşık gibi görünse de, büyük ve ölçeklenebilir projeler için can kurtarıcı olabilir.

Etiketler:

#csharp #dotnet #designpatterns #abstractfactory #oop #programlama #yazılımgelistirme

Kaynaklar:

Eğer bu seriyi beğendiyseniz, bir sonraki yazımızda Builder Design Pattern’i detaylı bir şekilde ele alacağız. 📦

👉 Takipte kalmak için bültenimize abone olun ve yorumlarınızı bizimle paylaşın!

İyi kodlamalar! 🚀

You may also like...

Bir yanıt yazın

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