【发布时间】:2018-01-12 20:59:39
【问题描述】:
在大多数工厂的模式解释主题中,我们被告知工厂需要拒绝使用new 来实例化对象。相反,我们需要用new 实例化工厂,为我们执行new 的具体对象。
但是为什么呢?在那种情况下,我们只是有过多的中产阶级。 For example here
在我的代码中,我使用这种方式。是工厂吗?方法对吗?
<?php
abstract class CarAbstract
{
abstract public function makeSignal();
public static function factory($type)
{
switch($type) {
'automobile':
return new AutoCar();
break;
'truck':
return new TruckCar();
break;
}
}
}
class AutoCar extends CarAbstract {
public function makeSignal()
{
return 'beep-beep';
}
}
class TruckCar extends CarAbstract {
public function makeSignal()
{
return 'faa-faa';
}
}
$auto = CarAbstract::factory('automobile');
$truck = CarAbstract::factory('truck');
$auto->makeSignal(); // beep-beep
$truck->makeSignal(); // faa-faa
附: 对不起我的英语
【问题讨论】:
-
工厂设计主要是为了Testability(单元测试)
-
请在此处发布您的实际代码,而不是指向您的代码的链接。
标签: php design-patterns factory factory-pattern