0
私は、画面を見て、簡単なFactory pattern
を使用して、してください:工場のパターン - スイッチの構築を避けるには?
私は、オブジェクトを選択して、インスタンスを作成するために、スイッチ演算子を使用見ることができるように。
しかし、100を超えるクラスがある場合は、問題は来た。 スイッチの構築を避けるにはどうすればよいですか?インターフェイスを使用しますか?
私は、画面を見て、簡単なFactory pattern
を使用して、してください:工場のパターン - スイッチの構築を避けるには?
私は、オブジェクトを選択して、インスタンスを作成するために、スイッチ演算子を使用見ることができるように。
しかし、100を超えるクラスがある場合は、問題は来た。 スイッチの構築を避けるにはどうすればよいですか?インターフェイスを使用しますか?
あなたが気にしなければならない唯一の事はnamespace
あるnew
キーワードと一緒にクラス名と変数を使用してswitch
またはif
文を避けることができます!あなたのコードは次のようになります。クラスが存在する場合
$className = "YourNamespace\\SomeFactory\\SomeImplementation\\" . $type;
return new $className(new Position());
また、あなたがチェックすることができます:それはあなたに新しいインスタンスを作成します
if (class_exists($className) === false) {
throw new Exception("Class $className not found.");
}
とした後にのみ。
'return new $ type(new Position());'はうまくいくはずですが、そうしたいかどうかわかりません。 –
変数をクラス名として使用しますか? – OPV
別のパターンや抽象ファクトリを追加使用することはできますか? – OPV