Factory Method vs Abstract Factory
Założenie: Zrozumieć różnicę między wzorcami projektowymi Factory Method i Abstract Factory w PHP i kiedy stosować każdy z nich.
Krok po kroku:
- Factory Method: Stwórzmy prosty przykład fabryki produkującej samochody. Każdy podtyp samochodu (np. sedan, SUV) będzie miał swoją własną fabrykę.
- Abstract Factory: Teraz rozszerzmy przykład o dodanie różnych marek samochodów. Każda marka będzie miała swoją fabrykę produkującą różne typy samochodów.
createCar();
echo "Typ samochodu: " . $sedan->getCarType() . "\n"; // Wyświetli: Typ samochodu: Sedan
$suvFactory = new SUVFactory();
$suv = $suvFactory->createCar();
echo "Typ samochodu: " . $suv->getCarType() . "\n"; // Wyświetli: Typ samochodu: SUV
?>
Ten kod demonstruje Factory Method. Każda fabryka tworzy konkretny typ samochodu.
createSedan();
echo "Marka i typ: " . get_class($toyotaSedan) . "\n";
$bmwFactory = new BMWFactory();
$bmwSUV = $bmwFactory->createSUV();
echo "Marka i typ: " . get_class($bmwSUV) . "\n";
?>
Abstract Factory pozwala na tworzenie rodzin powiązanych obiektów bez określania ich konkretnych klas.
Podsumowanie: Ten przykład pokazuje podstawowe różnice między wzorcami Factory Method i Abstract Factory. Factory Method jest prostszy i nadaje się do tworzenia pojedynczych obiektów, podczas gdy Abstract Factory jest bardziej złożony, ale pozwala na tworzenie rodzin obiektów.