これは私の問題です: 2つの可能な方法のうちの1つで特定のタイプのメッセージを処理することを可能にするJavaライブラリを作成しています(ただし、クライアントが他の処理モダリティを追加する可能性があります)。私は、戦略のパターンに応じて、以下のクラスを作成しました:「MessageTypeOne:ProcessorOne、MessageTypeTwo:ProcessorTwoをファクトリパターンを使用してコンフィグレーションから読み取られたオブジェクトをインスタンス化するにはどうすればよいですか?
interface Processor {
Message processMessage();
}
class ProcessorOne<M extends Message> implements Processor{
M processMessage(){ //do stuff }
}
class ProcessorTwo<M extends Message> implements Processor{
M processMessage(){ //do other stuff }
}
abstract class Message{
}
//example
class MessageTypeOne extends Message{
}
//example
class MessageTypeTwo extends Message{
}
は今、クライアントがメッセージのすべての具体的なタイプのために、彼が言うようにコンフィギュレーションを使用しています、MessageTypeThree:ProcessorOne "、MessageTypeOne型のメッセージをProcessorOneクラスなどで処理する必要があることを確認します。 設定はxmlファイルまたはその他のタイプの設定です。これはクライアントに依存します。
私の質問は、クライアントが設定から読み込むものと、自分が選んだ設定の種類に応じて、独自の構文解析方法を使用して読み込まれるものとの間に「リンク」を作り、ファクトリを使用して具体的なプロセッサをインスタンス化する方法パターン?
ありがとうございます。
このようにして、クライアントの責任はマップの内容をループしてマップのコンテンツをループして具体的なプロセッサを作成することです(私はそう思います)。 – sibly22
@ sibly22はい。プロセッサのインスタンスもマップにキャッシュすることができます。 –
ありがとう非常にありがとう – sibly22