Я хочу улучшить свои знания о шаблоне и архитектуре PHP. создать глупый пример, чтобы использовать фабричную модельШаблон Factory PHP, какие преимущества у меня есть?
Это мой код:
index.php
$shape = Shape::getShape('circle', 3);
echo $shape->getArea();
shapes.php
class Shape
{
public static function getShape($type, $num)
{
switch ($type) {
case 'circle':
return new Circle($num);
break;
case 'square':
return new Square($num);
break;
default:
throw new Exception("Unrecognized shape");
}
}
}
abstract class Form{
abstract public function getArea();
}
class Circle extends Form{
protected $_type = "Circle";
private $area;
/**
* circle constructor.
* @param $area
*/
public function __construct($area)
{
$this->area = $area;
}
public function getArea(){
return $this->area*pi();
}
}
Где находится advanteges, чтобы использовать этот подход ?
Я мог бы это сделать, чтобы создать Circle объект
$circle = new Circle(3);
echo $circle->getArea();
Единственное преимущество, что я могу видеть использование Factory Pattern является то, что я мог не знать, какие формы пользователь хотят.
Спасибо знак. В вашем примере (3 или 4 угла) я могу выполнить вызов кода вызова вместо заводского кода. Почему этот подход не подходит ?. И я мог бы использовать Injection Dependency в Triangle Class, например. Конечно, я могу получить один и тот же результат несколькими способами. – monkeyUser
Вы всегда можете избежать использования фабричного класса, поместив логику в свой главный код вызова .... но если вам нужно создавать фигуры в разных точках вашего кода, вы либо повторяете эту логику, либо называете класс/метод который обрабатывает его, чтобы избежать повторения; лучше в своем классе для обеспечения SRP SOLID (принцип единой ответственности), и сразу у вас есть завод –
спасибо, что это понятно – monkeyUser