私は次のコードを持っています。これは、タイプのライターベースのインスタンスを取得するファクトリー関数のようなものです。種類はenum
です。スイッチからのケース数を減らす
public Writer getWriter(WriterTypeEnum type){
switch(type){
case A: new AWriter() break;
case B: ... break;
case C: ... break;
...
}
}
問題は約30 case
です。それを減らしたり、まったく実装しないために私は何ができますか?
戦略パターンを使用して過去にこのようなケースを解決しましたが、ここではアプリ全体で古いenum
が使用されています。もう一つの問題は、私はこの列挙体に春の豆を入れることができないということです。スイッチケースのインスタンスの一部はbean
です。
WriterTypeEnum
には、UIから送信されるIDがあり、そのIDに基づいて適切なインスタンスを判断する必要があります。
あなたがここで求めていることは不明です。 switch文にすべての可能な場合を実装する必要はありません。あなたが明示的に扱いたくないものに対して 'default'を使うだけです。もう一つの選択肢は、enum自体が作家を作ることができるようにすることです - しかし、それについてもっと知ることなく、私たちは本当に分からないのです。 –
Mapを使用し、型を渡すことでオブジェクトを取得できます。これはあなたに役立つかもしれません:http://stackoverflow.com/questions/27993819/hashmap-vs-switch-statement-performance –