如何使用工厂模式来实例化从配置中读取的对象?

How can I use a Factory pattern to instanciate objects read from a configuration?

这是我的问题: 我正在编写一个 Java 库,它允许以两种可能的方式之一处理特定类型的消息(但客户端可能会添加其他处理方式)。根据策略模式,我创建了以下 classes:

    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{
    }

现在,客户端以这样一种方式使用配置,即对于他说的每种具体类型的消息:"MessageTypeOne: ProcessorOne, MessageTypeTwo: ProcessorTwo, MessageTypeThree: ProcessorOne",确定 MessageTypeOne 类型的消息必须由 class ProcessorOne 处理,因此在.. 配置可以是 xml 文件或任何其他类型的配置,这取决于客户端。

我的问题是:如何在客户端将从配置中读取的内容(根据他选择的配置类型,使用其自己的解析方式)和具体处理器的实例化之间创建一个 "link"使用工厂模式?

提前致谢

我认为很难存档。您可以通过工厂模式根据名称创建处理器实例,但不能在配置文件中关联这两个 class。我认为最简单的方法是为您的业务逻辑使用不同的工厂。例如:

    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