策略模式
策略模式能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。策略模式中的所有策略都要继承同样的父类或者实现同样的接口。
interface FileParserStrategy {
boolean support(String fileName);
void parse(String fileName);
}
@Component
public class TextFileParser implements FileParserStrategy {
@Override
public boolean support(String fileName) {
return fileName.endsWith(".txt");
}
@Override
public void parse(String fileName) {
System.out.println("解析文本文件:" + fileName);
}
}
@Component
public class WordFileParser implements FileParserStrategy {
@Override
public boolean support(String fileName) {
return fileName.endsWith(".doc") || fileName.endsWith(".docx");
}
@Override
public void parse(String fileName) {
System.out.println("解析Word文件:" + fileName);
}
}
@Service
public class FileParserService {
@Autowired
private List<FileParserStrategy> fileParserStrategies;
public void parse(String fileName) {
for (FileParserStrategy fileParserStrategy : fileParserStrategies) {
if (fileParserStrategy.support(fileName)) {
fileParserStrategy.parse(fileName);
break;
}
}
}
}