我想编写一个通用的文件处理类。此类将根据传递给它的文件类型加载特定的处理程序实例。
里面的方法之一会像这样工作(见评论):
public void doSomething( File ) {
// 1) Determine file type.
// 2) Use a lookup to see if an appropriate handler exists.
// 3) If a handler exists, use handler to do something with the file.
}
主类如何设计?
P.S:我一直在考虑在构造函数或专用查找方法中读取属性或 XML 文件。还有一个想法是让主类引用一个可以加载处理程序模块的接口(interface)。也许这符合某种模式?
最佳答案
这看起来像某种 Abstract Factory Pattern .
您首先需要通过某些接口(interface)为您的处理程序定义“契约(Contract)”,例如
public interface Handler {
void handle(final File file);
}
然后您需要定义不同的处理程序; XMLHandler
、PropertiesHandler
等。
现在你需要一个工厂来为你提供一个来自文件扩展名的处理程序实例(比如说),它的界面可能看起来像
public interface HandlerFactory {
Handler newHandler(final String fileName);
}
现在您只需要实现所有这些 - 例如,HandlerFactory
可以从属性文件或其他文件中读取扩展->类关联。
关于java - 设计具有可交换处理程序代码的通用处理程序类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912880/