私はこれについての助けを探しています.私は必要なものをほとんど実行するファクトリパターンを書きました.パラメータに基づいて新しいクラスを返すことを受け入れます.
私が必要としているのは、何かを取り込んで car 型のオブジェクトを返すファクトリ パターンです。この車には、タイプ、モデル、年式、メーカー、走行距離などの情報が含まれます。
これは私がこれまでに得たものです:
<?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 の読み取りを取り込んで与えることです。タイプ car のオブジェクトを返します。何を渡すかに関係なく、オプションの配列を取るクラスを作成できますが、工場のパターンが私のためにそれを行うことを望んでいました-私が間違っていない限り?
助けてくれてありがとう。