Factory Design Pattern ve Abstract Factory Design Pattern Arasındaki Farklar

Factory Design Pattern ve Abstract Factory Design Pattern Arasındaki Farklar

Unity'de Factory Design Pattern ve Abstract Factory Design Pattern Arasındaki Farklar

Unity projelerinde, tasarım desenleri oyun geliştirme sürecini daha düzenli, esnek ve sürdürülebilir hale getirir. Factory Design Pattern ve Abstract Factory Design Pattern, bu bağlamda sıkça kullanılan iki önemli tasarım desenidir. Ancak bu desenlerin birbirinden farklı kullanım alanları ve avantajları bulunmaktadır. Bu yazıda, Unity üzerinden bu iki desen arasındaki farkları ve nasıl uygulandıklarını ele alacağız.

Factory Design Pattern Nedir?

Factory Design Pattern, nesne oluşturma sürecini soyutlayan bir tasarım desenidir. Bu desen, bir sınıfın nesnelerini doğrudan oluşturmak yerine bir fabrika yöntemi aracılığıyla oluşturur. Bu, kodunuzu daha esnek ve yeniden kullanılabilir hale getirir.

Basit Bir Factory Pattern Örneği

using UnityEngine;

// Ürün arayüzü
public abstract class Enemy
{
    public abstract void Attack();
}

// Ürünlerin somut sınıfları
public class Goblin : Enemy
{
    public override void Attack()
    {
        Debug.Log("Goblin saldırıyor!");
    }
}

public class Orc : Enemy
{
    public override void Attack()
    {
        Debug.Log("Orc saldırıyor!");
    }
}

// Fabrika sınıfı
public class EnemyFactory
{
    public Enemy CreateEnemy(string type)
    {
        switch (type)
        {
            case "Goblin":
                return new Goblin();
            case "Orc":
                return new Orc();
            default:
                throw new System.ArgumentException("Geçersiz düşman türü");
        }
    }
}

Bu kod, bir düşman türüne göre (örneğin, "Goblin" veya "Orc") ilgili nesneyi oluşturan bir fabrika sınıfı sağlar.

Abstract Factory Design Pattern Nedir?

Abstract Factory Design Pattern, birbiriyle ilişkili nesneler ailesini oluşturmayı sağlayan bir tasarım desenidir. Bu desen, bir ürün grubundaki tüm nesnelerin birlikte uyumlu çalışmasını sağlar. Factory Design Pattern'in daha geniş bir kullanım alanına sahip olan bir varyasyonudur.

Abstract Factory Pattern Örneği

using UnityEngine;

// Ürün arayüzleri
public abstract class Enemy
{
    public abstract void Attack();
}

public abstract class Weapon
{
    public abstract void Use();
}

// Ürünlerin somut sınıfları
public class Goblin : Enemy
{
    public override void Attack()
    {
        Debug.Log("Goblin saldırıyor!");
    }
}

public class Orc : Enemy
{
    public override void Attack()
    {
        Debug.Log("Orc saldırıyor!");
    }
}

public class Sword : Weapon
{
    public override void Use()
    {
        Debug.Log("Kılıç kullanılıyor!");
    }
}

public class Bow : Weapon
{
    public override void Use()
    {
        Debug.Log("Yay kullanılıyor!");
    }
}

// Fabrika arayüzü
public interface IGameFactory
{
    Enemy CreateEnemy();
    Weapon CreateWeapon();
}

// Somut fabrikalar
public class FantasyGameFactory : IGameFactory
{
    public Enemy CreateEnemy()
    {
        return new Goblin();
    }

    public Weapon CreateWeapon()
    {
        return new Sword();
    }
}

public class SciFiGameFactory : IGameFactory
{
    public Enemy CreateEnemy()
    {
        return new Orc();
    }

    public Weapon CreateWeapon()
    {
        return new Bow();
    }
}

Bu kod, farklı oyun temaları (örneğin, "Fantasy" veya "SciFi") için hem düşmanları hem de silahları üreten bir Abstract Factory yapılandırmasını içerir.

Factory Pattern ve Abstract Factory Pattern Arasındaki Farklar

Özellik Factory Pattern Abstract Factory Pattern
Amaç Tek bir ürün ailesi oluşturur. İlişkili nesneler ailesini oluşturur.
Kullanım Alanı Basit ve bağımsız nesne üretimi. Birbirine bağlı nesneler arasında tutarlılık sağlanması.
Karmaşıklık Daha basit bir yapıya sahiptir. Daha karmaşık ve geniş bir yapıya sahiptir.
Örnek Sadece "Goblin" veya "Orc" nesnelerini üretmek. Hem "Goblin" hem de "Sword" nesnelerini üretmek.