我有一个小的设计问题上,我希望得到一些建议允许最大的灵活/可扩展性:使用工厂
我有几类,从同一个基类继承,每个人都可以接受同样的数据并以稍微不同的方式进行分析。
Analyzer
|
˪_ AnalyzerA
|
˪_ AnalyzerB
...
我有一个定义了分析应该调用及其参数的输入文件(我没有对文件的格式控制)。另外,它也以相同的方式定义了数据提取器,也包含了其他类似的东西(类似的,我的意思是这是一个可以有多种变化的动作)。
我有一个模块在文件中不同的分析仪,它遍历并调用一些工厂,构建正确的分析。对于输入文件可以定义的每个原型,我都有一个工厂,并且非常好。
但是,如果我想扩展它,并添加一个新的类型分析是什么?
我在考虑的解决方案是为每个工厂使用属性文件,这些工厂将以工厂名称命名,并且它将在输入文件的任何想要执行的定义与实际类别之间保持映射关系用于执行操作。
这样我可以加载的类在运行时 - >验证它是否实施正确的接口,然后执行它。
如果某些John Doe想创建他自己的分析器,他只需要添加一个新的属性到正确的文件中(我不太清楚什么是允许这种属性定制的最佳策略) 。
因此,在短期:
- 是我的解决方案也有缺陷?
- 如果没有什么是用户友好/方便的方式来允许自定义属性?
P.S
- 不幸的是,我仅限于使用只建立JDK类为现有的解决方案,所以我不能刚落,在SF上他们。
- 我希望这个问题不会脱节我只是不习惯以这种方式削减我的翅膀,没有SF或其他人来帮助我实现一个优雅的解决方案。
您可能会发现[程序员堆栈交换](http://programmers.stackexchange.com/)更适合这种类型的概念问题。 – Bobulous 2013-04-27 12:32:34