这是我的问题: 我正在编写一个Java库,它允许以两种可能的方式之一处理特定类型的消息(但客户端可能会添加其他处理模式)。我根据策略模式创建了以下类:
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{
}
现在,客户端使用一种配置,对于每种具体类型的Message,他说:“MessageTypeOne:ProcessorOne,MessageTypeTwo:ProcessorTwo,MessageTypeThree:ProcessorOne”,确定MessageTypeOne类型的消息必须由类ProcessorOne处理等等.. 配置可以是xml文件或任何其他类型的配置,这取决于客户端。
我的问题是:如何在客户端从配置中读取(使用自己的解析方式,根据他选择的配置类型)和使用Factory模式实例化具体处理器之间创建“链接” ?
提前致谢
答案 0 :(得分:0)
我认为将其存档很困难。您可以通过Factory模式根据名称创建处理器实例,但不能在配置文件中关联这两个类。我认为最简单的方法是使用不同的Factory来实现业务逻辑。例如:
Map<String, String> conf = null; // What parsed from config
String messageType = // What you have
Processor processor = ProcessorFactory.createProcessor(conf.get(messageType));
Message message = MessageFactory.createMessage(messageType);
// processing