我有一些设计问题,我希望得到一些建议:
我有几个继承自同一基类的类,每个类都可以接受相同的数据并以稍微不同的方式对其进行分析。
Analyzer
|
˪_ AnalyzerA
|
˪_ AnalyzerB
...
我有一个输入文件(我无法控制文件的格式),它定义了应该调用哪些分析器及其参数。此外,它也以相同的方式和其他类似的东西定义数据提取器(类似地,我的意思是这是一个可以有多种变化的动作)。
我有一个模块,它迭代文件中的不同分析器并调用一些构建正确分析器的工厂。我为输入文件可以定义的每个原型都有一个工厂,到目前为止一直很好。
但是,如果我想扩展它并添加一种新型分析器呢?
我正在考虑的解决方案是为每个工厂使用一个属性文件,该工厂将以工厂名称命名,它将在输入文件的任何它想要我执行的定义和我使用的实际类之间保持一个映射。执行行动。
这样我可以在运行时加载该类 - >验证它是否正在实现正确的接口,然后执行它。
如果某些John Doe想要创建自己的分析器,他只需要在正确的文件中添加一个新属性(我不太确定什么是允许这种属性定制的最佳策略)。
简而言之:
P.S
答案 0 :(得分:0)
了解java.sql.DriverManager.getConnection(connectionString)方法的实现方式。最好的方法是观看源代码。
非常粗略的想法总结(它隐藏在很多私有方法中)。它或多或少是责任链的实现,尽管没有相关的驱动因素列表。
打个比方:
优点: