我正在寻求一些帮助,我已经编写了一个工厂模式,几乎可以满足我的需求,接受它会根据参数返回一个新类。
我需要的是一个工厂模式,它接受一些东西并返回一个汽车类型的对象。这辆车将包含诸如类型、型号、年份、品牌和里程表读数等信息。
这是我到目前为止所做的:
<?php
class Car_Factory_Pattern{
protected $_instance;
protected $_dependencies;
public function getInstance(){
if(null == self::$_instance){
self::$_instance == new self();
}
return self::$_instance;
}
public function create($class){
if(empty($class)){
throw new Exception('Cannot declare and empty class.');
}
if(!isset(self::$_dependencies)){
throw new Exception('The $dependencies are not set for this class');
}
if(!isset(self::$_dependencies[$class])){
throw new Exception('This class does not exist in the dependencies array');
}
if(isset(self::$_dependencies[$class]['params'])){
$new_class = new $class(implode(', ', self::$_dependencies[$class]['params']));
return $new_class;
}else{
$new_class = new $class();
return $new_class;
}
}
public function registerDependencies(array $array){
self::$_dependencies = $array;
}
}
您需要的数据结构是:
函数依赖(){
$dependencies = array(
'Car_Class' => array(
'params' => array(
'Type',
'Model',
...
),
),
);
return $dependencies;
}
然后,您通过执行以下操作来实例化该类:
$factory = Car_Factory_Pattern()::getInstance();
$factory->registerDependencies(dependencies());
然后让我这样做:
$some_car = Car_Factory_Pattern()::create('Car_Class');
问题在于我基本上对依赖项进行了硬编码,这适用于我正在处理的另一个应用程序,但是 - 我需要这个类做的是读取类型、模型、品牌、年份和 odom 并给出我返回一个汽车类型的对象,无论您传入什么,我都可以创建一个带有一系列选项的类,我希望工厂模式能为我做到这一点 - 除非我弄错了?
谢谢您的帮助。