Implementacja Factory
Założenie: Zrozumieć i zaimplementować prosty przykład wzorca projektowego Factory w PHP, aby tworzyć obiekty w sposób elastyczny i niezależny od konkretnych klas.
Krok po kroku:
- Tworzenie interfejsu: Zdefiniujmy interfejs
Product
, który będą implementowały nasze konkretne produkty. - Tworzenie klas produktów: Stwórzmy dwie klasy implementujące interfejs
Product
:ConcreteProductA
iConcreteProductB
. - Tworzenie fabryki: Stwórzmy klasę
Factory
, która będzie odpowiedzialna za tworzenie obiektówProduct
. - Użycie fabryki: Teraz możemy użyć fabryki do tworzenia obiektów.
interface Product {
public function getName(): string;
}
Ten kod definiuje interfejs Product
z metodą getName()
, która zwraca nazwę produktu.
class ConcreteProductA implements Product {
public function getName(): string {
return "Produkt A";
}
}
class ConcreteProductB implements Product {
public function getName(): string {
return "Produkt B";
}
}
Te klasy implementują interfejs Product
i zwracają odpowiednio “Produkt A” i “Produkt B”.
class Factory {
public function createProduct(string $type): Product {
if ($type === "A") {
return new ConcreteProductA();
} elseif ($type === "B") {
return new ConcreteProductB();
} else {
throw new InvalidArgumentException("Nieznany typ produktu.");
}
}
}
Metoda createProduct()
przyjmuje typ produktu jako argument i zwraca odpowiedni obiekt. Obsługuje również wyjątek w przypadku nieznanego typu.
$factory = new Factory();
$productA = $factory->createProduct("A");
$productB = $factory->createProduct("B");
echo $productA->getName() . "\n"; // Wyświetli: Produkt A
echo $productB->getName() . "\n"; // Wyświetli: Produkt B
Ten kod pokazuje, jak użyć fabryki do utworzenia obiektów ConcreteProductA
i ConcreteProductB
.
Ten przykład pokazuje podstawy wzorca Factory w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z bardziej zaawansowanymi implementacjami.