java - 设计具有可交换处理程序代码的通用处理程序类?

标签 java configuration indirection modularization

我想编写一个通用的文件处理类。此类将根据传递给它的文件类型加载特定的处理程序实例。

里面的方法之一会像这样工作(见评论):

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);
}

然后您需要定义不同的处理程序; XMLHandlerPropertiesHandler 等。
现在你需要一个工厂来为你提供一个来自文件扩展名的处理程序实例(比如说),它的界面可能看起来像

public interface HandlerFactory {
  Handler newHandler(final String fileName);
}

现在您只需要实现所有这些 - 例如,HandlerFactory 可以从属性文件或其他文件中读取扩展->类关联。

关于java - 设计具有可交换处理程序代码的通用处理程序类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912880/

相关文章:

java - 如何在docker容器的tomcat 7中部署war文件

java - 使用 Spring 4.0.6.RELEASE 使用不同的 *.properties 文件运行我的集成测试

java - 为二叉搜索树实现 add 方法

java - 仅将 tomcat 7 配置为 servlet 容器

c++ - 在 C++ 中,对象创建括号前的 Asterisk 是什么意思?

java - 如何在 WebSphere 中的受信任证书 keystore 中安装证书?

java - 将 Hibernate 集成到在嵌入式 Jetty 上运行的 Spring

asp.net-mvc - 网页:Version setting do?是什么意思

c++ - OPNET 中的 C 编程

javascript - 将 Prop 传递给 React 搜索栏的目的是什么?