Я собираюсь использовать шаблон фабрики для создания разных объектов. Но я немного смущаюсь, если создание объектов внутри другого класса с помощью заводского шаблона тесно связано или нет. Например:с использованием заводского рисунка и плотной муфты
class CarFactory
{
public static function createCar($type)
{
if ($type == 'sport') {
return new SportCar();
} elseif ($type == 'LuxuryCar' {
return new LuxuryCar();
}
}
}
interface Vehicle
{
public function drive();
}
class SportCar implements Vehicle
{
$speed = 'very fast';
public function drive()
{
return ' is driving sport car';
}
}
class LuxuryCar implements Vehicle
{
$speed = 'normal';
public function drive()
{
return ' is driving luxury car';
}
}
class DrivingApplication
{
public function __constructor($driverName, $carType)
{
$car = CarFactory::createCar($carType); //<------ HERE//
echo $driverName . $car->drive();
}
}
$app = new DrivingApplication();
Таким образом, внутри класса DrivingApplication, я создал класс автомобиля с помощью CarFactory. Мой вопрос:
- все еще предполагается плотная связь ??
- Должен ли я создать объект автомобиля за пределами класса DrivingApplication и использовать инъекцию зависимостей для решения тесной связи?
- что делать, если я могу определить только тип автомобиля для создания внутри класса DrivingApplication?
Почему бы вам не назвать заводской класс «VehicleFactory»? Трудно ответить на ваш вопрос, не видя вызовы классов/кода. Это может быть более подходящий вопрос для codereview.stackexchange.com –