2017-09-25 5 views
0

私は、画面を見て、簡単なFactory patternを使用して、してください:工場のパターン - スイッチの構築を避けるには?

enter image description here

私は、オブジェクトを選択して、インスタンスを作成するために、スイッチ演算子を使用見ることができるように。

しかし、100を超えるクラスがある場合は、問題は来た。 スイッチの構築を避けるにはどうすればよいですか?インターフェイスを使用しますか?

+1

'return new $ type(new Position());'はうまくいくはずですが、そうしたいかどうかわかりません。 –

+0

変数をクラス名として使用しますか? – OPV

+0

別のパターンや抽象ファクトリを追加使用することはできますか? – OPV

答えて

1

あなたが気にしなければならない唯一の事は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."); 
} 

とした後にのみ。

関連する問題