我正在考虑使用工厂模式来创建不同的对象。但是如果通过工厂模式在另一个类中创建对象是否紧密耦合,我有点困惑。例如:
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 类中确定要创建的汽车类型怎么办?