Я думаю использовать фабричный шаблон для создания разных объектов. Но я немного запутался, если создание объектов внутри другого класса с помощью фабричного шаблона делает тесно связанным или нет. Например:
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 - person Mike Brant   schedule 15.10.2014