Sobes.tech
Middle

'Fabrika' deseni ile 'fabrika yöntemi' arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

"Fabrika" (Simple Factory) deseni, aynı türdeki nesnelerin oluşturulmasından sorumludur ve nesne örnekleme mantığını gizler. Bu, giriş parametrelerine göre belirli bir nesne oluşturan ve döndüren ayrı bir sınıf veya statik bir fonksiyondur.

<?php

class ProductA {}
class ProductB {}

class ProductFactory
{
    public static function createProduct(string $type)
    {
        switch ($type) {
            case 'A':
                return new ProductA();
            case 'B':
                return new ProductB();
            default:
                throw new \InvalidArgumentException("Geçersiz ürün tipi");
        }
    }
}

"Fabrika Yöntemi" (Factory Method) deseni, nesne oluşturmak için bir arayüz tanımlayan ve alt sınıfların hangi sınıfı örnekleyeceğine karar vermesine izin veren bir yaratım desenidir. Nesne oluşturma sorumluluğunu alt sınıflara devreder.

<?php

interface Product
{
    public function operation(): string;
}

class ConcreteProductA implements Product
{
    public function operation(): string
    {
        return "ConcreteProductA'nın sonucu";
    }
}

class ConcreteProductB implements Product
{
    public function operation(): string
    {
        return "ConcreteProductB'nin sonucu";
    }
}

abstract class Creator
{
    abstract public function factoryMethod(): Product;

    public function someOperation(): string
    {
        // Fabrika metodunu çağırarak bir Product nesnesi oluştur.
        $product = $this->factoryMethod();
        // Şimdi, ürünü kullan.
        return "Yaratıcı: Aynı yaratıcı kodu, " . $product->operation() . " ile çalıştı";
    }
}

class ConcreteCreatorA extends Creator
{
    public function factoryMethod(): Product
    {
        return new ConcreteProductA();
    }
}

class ConcreteCreatorB extends Creator
{
    public function factoryMethod(): Product
    {
        return new ConcreteProductB();
    }
}

Ana fark şu şekildedir:

Özellik "Fabrika" (Simple Factory) "Fabrika Yöntemi" (Factory Method)
Sorumluluk Bir sınıf veya statik fonksiyon nesneleri oluşturur. Alt sınıflar hangi sınıfın oluşturulacağını belirler.
Esneklik Sınıfı değiştirmeyi gerektirir yeni ürün tipi eklenirken. Yeni alt sınıflar eklenerek kolayca genişletilebilir.
Kalıtım Genellikle kullanılmaz veya sadece bir fabrika için kullanılır. Kalıtım kullanılarak hangi nesnenin oluşturulacağı belirlenir.
Soyutlama seviyesi Daha az soyut. Daha soyut.
Amaç Nesnelerin merkezi oluşturulması. Nesne oluşturmayı alt sınıflara devretmek.