1

在我的团队目前正在进行的项目中,我们有数十个用于特定事件的处理程序,它们实现了一个通用接口,并在它们侦听的事件发生时调用它们。

问题来了:我们是应该使用属性文件来配置我们当前拥有的处理程序还是使用反射来列出所有实现公共接口的类?

使用属性文件的优点:

  • 更灵活,更容易禁用特定的处理程序。
  • 在不同的环境中可能有不同的配置。

使用反射的优点:

  • 更易于部署,无需维护用于添加/删除类的属性文件。
  • 更防错,因为我们不需要处理属性文件中的纯文本并使用类加载器加载它们。

我目前在两者之间犹豫不决。是否存在普遍认为的“良好做法”?

4

2 回答 2

1

我对房产的投票。

我能想到的主要原因是您可能在类路径中有不想使用(无论出于何种原因)或打开和关闭的处理程序

于 2012-09-20T05:25:14.597 回答
1

在这两个选项中,我会投票赞成使用属性文件。它可能涉及维护更多文件,但与隐式配置相比,显式配置总是更好。它还将使刚接触您的代码库的人更容易理解正在发生的事情。

我还建议您使用依赖注入(Spring 或 Guice)。Spring DI 满足您的要求。您可以显式配置使用哪些处理程序,并且您可以轻松地为生产、UAT 等设置不同的文件。我们有类似的模式,Spring 工作得很好。

于 2012-09-20T06:00:09.700 回答