Sobes.tech
Middle

'Fabrika' naqsh va 'fabrika usuli' o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Shablon "Fabrika" (Simple Factory) javob beradi bir xil turdagi obyektlarni yaratish, ularning instansiyalash logikasini yashirish. Bu alohida sinf yoki statik funktsiya bo'lib, kirish parametrlariga asoslangan holda aniq obyektni yaratadi va qaytaradi.

<?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("Noto'g'ri mahsulot turi");
        }
    }
}

"Fabrika usuli" (Factory Method) dizayn modeli, obyekt yaratish uchun interfeysni belgilaydigan va subklasslarga qaysi sinfni instansiyalashni hal qilish imkonini beradigan yaratilish dizaynidir. U obyektlarni yaratish masuliyatini subklasslarga o'tkazadi.

<?php

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

class ConcreteProductA implements Product
{
    public function operation(): string
    {
        return "ConcreteProductA natijasi";
    }
}

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

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

    public function someOperation(): string
    {
        // Fabrika metodini chaqirish orqali Product obyektini yaratish.
        $product = $this->factoryMethod();
        // Endi, mahsulotdan foydalaning.
        return "Yaratuvchi: Xuddi shunday yozuvchi " . $product->operation() . " bilan ishladi";
    }
}

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

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

Asosiy farq quyidagicha:

Xususiyat "Fabrika" (Simple Factory) "Fabrika usuli" (Factory Method)
Mas'uliyat Bir sinf yoki statik funktsiya obyektlarni yaratadi. Subklasslar qaysi sinfni yaratishni belgilaydi.
Moslashuvchanlik Cheklangan. Yangi mahsulot turini qo'shishda fabrika sinfini o'zgartirish talab qilinadi. Yuqori. Yangi subklasslar qo'shish orqali osongina kengaytiriladi.
Meros olish Odatda ishlatilmaydi yoki faqat bitta fabrika uchun ishlatiladi. Meros olishga asoslangan, qaysi obyektni yaratishni belgilash uchun.
Abstraktsiya darajasi Kamroq abstrakt. Ko'proq abstrakt.
Maqsad Ob'ektlarni markaziy yaratish. Ob'ekt yaratishni subklasslarga topshirish.