Przykłady 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
Shape
, który będzie określał metody wspólne dla wszystkich kształtów. - Implementacja klas konkretnych: Stwórzmy klasy
Circle
,Rectangle
iSquare
implementujące interfejsShape
. - Klasa fabryki: Utwórzmy klasę
ShapeFactory
, która będzie odpowiedzialna za tworzenie obiektów różnych kształtów. - Użycie fabryki: Użyjmy klasy
ShapeFactory
do utworzenia i użycia obiektów.
interface Shape {
public function draw();
}
Ten kod definiuje interfejs Shape
z metodą draw()
. Wszystkie klasy implementujące ten interfejs muszą zaimplementować tę metodę.
class Circle implements Shape {
public function draw() {
echo "Rysuję koło
";
}
}
class Rectangle implements Shape {
public function draw() {
echo "Rysuję prostokąt
";
}
}
class Square implements Shape {
public function draw() {
echo "Rysuję kwadrat
";
}
}
Te klasy implementują metodę draw()
, każda na swój sposób.
class ShapeFactory {
public function getShape($shapeType){
switch($shapeType){
case 'CIRCLE':
return new Circle();
case 'RECTANGLE':
return new Rectangle();
case 'SQUARE':
return new Square();
default:
return null;
}
}
}
Metoda getShape()
zwraca obiekt odpowiedniego typu w zależności od przekazanego parametru.
$shapeFactory = new ShapeFactory();
$circle = $shapeFactory->getShape('CIRCLE');
$rectangle = $shapeFactory->getShape('RECTANGLE');
$square = $shapeFactory->getShape('SQUARE');
$circle->draw();
$rectangle->draw();
$square->draw();
Ten kod demonstruje, jak użyć fabryki do tworzenia obiektów różnych kształtów.
Ten przykład pokazuje podstawowe zastosowanie wzorca Factory w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z bardziej zaawansowanymi przykładami!