正如所说的“如果我们有超类和n个子类,并且基于提供的数据,我们必须返回其中一个子类的对象,我们使用工厂模式“使用工厂设计模式时有点复杂
情况: 我有20个客户端,更多可以随时添加。每个将提供一个文件,从中提取数据并将其插入到数据库中。每个客户都有自己的维护文件的风格,即数据字段位于不同的地方。
解决方案: 为此,我想我将不得不使用工厂设计模式,创建20个班,每个班都有自己的执行每一个领域,比如如何和它有哪个地方在文件解压缩。当新的客户被添加时,我只是创建一个新的类,我完成了,不需要其他更改。
我是否正确到这里?
复杂性: 现在的问题是,客户提供的文件,可以在任的4种格式(PDF,XLS(X),HTML,TXT)。从这些格式中提取文本的引擎必须是静态的,就像我使用pdftoXML将PDF提取到XML等一样。如果我不创建将PDF转换为XML的单独引擎类,那么我将不得不重新编写在每个客户端的类中提供PDF格式的PDF文本提取。 Excel抽取引擎也是如此。
问题: 我该如何将这些引擎装入工厂模式?如果引擎类是静态的,并且需要处理pdf的子类,请调用pdf类的提取方法来获取需要的数据或什么?
希望我自己清楚,感谢
“客户端类层次结构模型的提取算法以及”对不起,得到这个? – shabby 2012-07-12 03:18:27
如果多个客户端使用相同的提取算法,请勿尝试将共享提取算法放入公共超类。找到另一种分享方式,或许使用策略模式。 – ComDubh 2012-07-12 11:34:16
就像在这种情况下的策略的想法一样,我认为我应该去做这件事,但为什么不使用公共超类中的任何已知问题呢? – shabby 2012-07-13 03:13:02