我有一个小设计问题,希望得到一些建议:
我有几个继承自同一个基类的类,每个类都可以接受相同的数据并以稍微不同的方式对其进行分析。
Analyzer
|
˪_ AnalyzerA
|
˪_ AnalyzerB
...
我有一个输入文件(我无法控制文件的格式),它定义了应该调用哪些分析器及其参数。另外,它以相同的方式定义数据提取器和其他类似的东西(类似的意思是这是一个可以有多种变化的动作)。
我有一个模块可以遍历文件中的不同分析器并调用一些构造正确分析器的工厂。对于输入文件可以定义的每个原型,我都有一个工厂,到目前为止一切都很好。
但是如果我想扩展它并添加一种新型分析器怎么办?
我正在考虑的解决方案是为每个工厂使用一个属性文件,该文件将以工厂名称命名,并且它将保存输入文件的定义之间的映射,即它希望我执行的任何内容与我用来执行的实际类行动。
这样我可以在运行时加载该类->验证它是否实现了正确的接口,然后执行它。
如果某个 John Doe 想创建自己的分析器,他只需要在正确的文件中添加一个新属性(我不太确定允许这种属性定制的最佳策略是什么)。
简而言之:
- 我的解决方案是否存在缺陷?
- 如果没有,允许自定义属性的最用户友好/方便的方式是什么?
附言
- 不幸的是,我仅限于使用内置的 JDK 类作为现有解决方案,所以我不能只在它们上添加 SF。
- 我希望这个问题并不过分我只是不习惯以这种方式剪掉我的翅膀,没有 SF 或其他东西来帮助我实施一个优雅的解决方案。