正如所说“如果我们有一个超类和 n 个子类,并且根据提供的数据,我们必须返回其中一个子类的对象,我们使用工厂模式”
情况: 我有20个客户,随着时间的推移可以添加更多。每个都将提供一个文件,从中提取数据并将其插入到数据库中。每个客户都有自己的文件维护方式,即数据字段位于不同的位置。
解决方案: 为此我认为我将不得不使用工厂设计模式,我创建了 20 个类,每个类对每个字段都有自己的实现,比如它必须如何以及从文件中的哪个位置提取它。随着新客户端的添加,我只需创建一个新类就完成了,不需要进行其他更改。
到这里为止我是正确的吗?
复杂性: 现在的问题是客户提供的文件可以是 4 种格式(PDF、XLS(X)、HTML、TXT)中的任何一种。从这些格式中提取文本的引擎必须是静态的,比如我使用 pdftoXML 将 PDF 提取为 XML 等。如果我不创建一个单独的引擎类来将 PDF 转换为 XML,那么我将不得不重新编写在每个提供 PDF 文件的客户类中提取 PDF 文本。excel提取引擎也是如此。
问题: 我应该如何将这些引擎纳入工厂模式?引擎类是否应该是静态的,并且必须处理 pdf 的子类例如调用 pdf 类的提取方法来获取所需的数据或什么?
希望我说清楚了,谢谢