Middle
Mi a különbség a 'gyár' minta és a 'gyári módszer' között?
sobes.tech MI
Válasz az MI-től
Az "Egységgyár" (Simple Factory) minta felelős az egy típusú objektumok létrehozásáért, elrejtve azok példányosításának logikáját. Egy külön osztály vagy statikus függvény képviseli, amely bemeneti paraméterek alapján létrehoz és visszaad egy adott objektumot.
<?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("Invalid product type");
}
}
}
A "Gyárfüggvény" (Factory Method) egy létrehozó tervezési minta, amely meghatározza az interfészt az objektum létrehozásához, de lehetővé teszi az alosztályok számára, hogy eldöntsék, melyik osztályt példányosítsák. A felelősséget az objektumok létrehozásáért az alosztályokra hárítja.
<?php
interface Product
{
public function operation(): string;
}
class ConcreteProductA implements Product
{
public function operation(): string
{
return "Result of ConcreteProductA";
}
}
class ConcreteProductB implements Product
{
public function operation(): string
{
return "Result of ConcreteProductB";
}
}
abstract class Creator
{
abstract public function factoryMethod(): Product;
public function someOperation(): string
{
// Call the factory method to create a Product object.
$product = $this->factoryMethod();
// Now, use the product.
return "Creator: The same creator's code has just worked with " . $product->operation();
}
}
class ConcreteCreatorA extends Creator
{
public function factoryMethod(): Product
{
return new ConcreteProductA();
}
}
class ConcreteCreatorB extends Creator
{
public function factoryMethod(): Product
{
return new ConcreteProductB();
}
}
A fő különbség a következő:
| Jellemző | "Egységgyár" (Simple Factory) minta | "Gyárfüggvény" (Factory Method) minta |
|---|---|---|
| Felelősség | Egy osztály vagy statikus függvény hoz létre objektumokat. | Az alosztályok határozzák meg, melyik osztályt példányosítják. |
| Rugalmasság | Korlátozott. A gyártó osztály módosítását igényli az új típus hozzáadásakor. | Magas. Könnyen bővíthető új alosztályok hozzáadásával. |
| Öröklődés | Általában nem használják, vagy csak egy gyártó osztály létrehozására. | Az öröklődésen alapul a létrehozandó objektum típusának meghatározásához. |
| Absztrakciós szint | Kevésbé absztrakt. | Magasabb. |
| Cél | Objektumok központosított létrehozása. | A létrehozási folyamat delegálása az alosztályokra. |