我正在编写一个目录解析器实用程序,该实用程序将扫描不同目录以查找不同类型的文件.
现在,一个简单的实现促使我执行以下操作.
拥有要解析的目录列表,将其循环,然后将其传递给实际执行文件I / O和其他逻辑并返回结果的方法.
List
//loop over the list and call parseDirecotry()
parseDirectory(Dir dirToParse){
//do file io
if (filename.matches("pattern"){
//proceed)
}
}
扫描的每个目录都需要我过滤掉某些文件.所以现在
对于具体目录,匹配模式将有所不同,现在我可以继续根据目录类型在其他逻辑中添加匹配模式.
要么
我可以将模式做成Dir对象的一部分,使其抽象,让特定的目录实现拥有特定的匹配模式.
这样,我不必每次扫描新目录时都需要触摸parseDirectory方法.
问题是:这里是否可以利用某些设计模式?您对上述程序的接口方式有何看法,您是否也认为将parseDirectory()方法移至抽象目录类是否有意义?
解决方法:
好吧,我会提出我的解决方案
1)创建一个名为IFileProcessor的接口,该接口具有processFile方法
2)创建特定于实现IFileProcessor的文档类型的单例类.因此,这些类将是DocFileProcessor,XLSFileProcessor等,并且每个类将具有自己的processFile API特定实现.
3)创建一个工厂类,例如FileProcessorFactory.它应该具有一个称为IFileProcessor getFileProcessor(String fileTypeExtension)的API.该API将以文件扩展名作为输入,并返回DocFileProcessor,XLSFileProcessor等输入doc,xls等.
4)在循环调用中,FileProcessorFactory的getFileProcessor为其提供输入.现在,在返回的实例上调用processFile.
具有这种设计可以将if-else的逻辑与Factor分离,从而使您的逻辑与文件类型无关.
标签:java,design-patterns
来源: https://codeday.me/bug/20191102/1988798.html