Sobes.tech
Middle

'Fabrika' nümunəsi ilə 'fabrika metodu' arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

"Fabrika" (Sadə Fabrika) nümunəsi eyni növ obyektlərin yaradılmasından məsuldur və onların instansiyalaşdırma loqikasını gizlədir. Bu, giriş parametrlərinə əsaslanaraq konkret obyekt yaradan və geri qaytaran ayrıca sinf və ya statik funksiyadır.

<?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("Yanlış məhsul tipi");
        }
    }
}

"Fabrika Metodu" (Factory Method) nümunəsi, obyekt yaratmaq üçün interfeys təyin edən və alt siniflərin hansı sinfi instansiya edəcəyinə qərar verməsinə imkan verən yaradıcı nümunədir. O, obyektlərin yaradılmasının məsuliyyətini alt siniflərə köçürür.

<?php

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

class ConcreteProductA implements Product
{
    public function operation(): string
    {
        return "ConcreteProductA-nın nəticəsi";
    }
}

class ConcreteProductB implements Product
{
    public function operation(): string
    {
        return "ConcreteProductB-nin nəticəsi";
    }
}

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

    public function someOperation(): string
    {
        // Fabrika metodunu çağıraraq Product obyektini yaradın.
        $product = $this->factoryMethod();
        // İndi, məhsuldan istifadə edin.
        return "Yaradıcısı: Eyni yaradıcının kodu, " . $product->operation() . " ilə işləyib";
    }
}

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

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

Əsas fərq aşağıdakıdır:

Xüsusiyyət "Fabrika" (Sadə Fabrika) "Fabrika Metodu" (Factory Method)
Məsuliyyət Bir sinif və ya statik funksiya obyektlər yaradır. Alt siniflər hansı sinfi yaradacağını müəyyən edir.
Elastiklik Məhduddur. Yeni məhsul növü əlavə edilərkən fabrikanı dəyişdirmək lazımdır. Yüksək. Yeni alt siniflər əlavə etməklə asanlıqla genişləndirilə bilər.
Miras Adətən istifadə edilmir və ya yalnız bir fabrikanın yaradılmasında istifadə olunur. Miras üzərində qurulmuşdur, hansı obyektin yaradılacağını müəyyən etmək üçün.
Abstraksiya səviyyəsi Daha az abstrakt. Daha çox abstrakt.
Məqsəd Mərkəzləşdirilmiş obyekt yaradılması. Obyekt yaradılmasını alt siniflərə həvalə etmək.