Паттерн фабрика PHP, в чем суть?
Фабрика позволят избавиться в коде от прямой зависимости от конкретного класса – это её основная суть. Иногда это удобно, приведу такой пример:
Есть некий класс, отвечающий за процессинг платежей PaymentManager. Вы используете фабрику, получая его и сразу передавая ему заказ:$manager = PaymentFactory::getManager($order)
Тут ваш заказчик говорит, что теперь заказы суммой меньше 10 тыс руб должны направляться на другой платежный сервис. Можно, конечно переписать старый менеджер платежей, а можно добавить новый AlternatePaymentManager. при этом весь код, работающий с платежами остается неизменным, только в фабрике добавлям:public static function getManager($order)
{
   if($order['total'] >= 10000) {
    return new PaymentManager($order); 
  }
  else {
    return new AlternatePaymentManager($order);
  }
}
Такие примеры часто возникают в реальных приложениях, их можно прочувствовать заранее при написании кода. Плюс еще можно добиться выгоды и при написании тестов.
в фабрике нужен ещё фабричный методclass ProductManager
{
    public static create($productName)
    {
         $object = ucfirst($productName).'Product';
         return new $product();
    }
}

$product = ProductManager::create('first');
$product->getName();