我的代码检测是否 mimeType
等于一些MIME type,如果是,就会做一定的转换
public void convertToMp3(File src, File target,String mimeType){
if(mimeType.equals("audio/mpeg")){
...
}else if(mimeType.equals("audio/wav")){
mp3ToWav();
}else if(mimeType.equals("audio/ogg")){
...
}else if(...){
... //More if and else here
}
我缩短了我的代码,因为它有很多else if语句,什么设计模式适合删除许多if和else> 或 else if 语句?
最佳答案
您可以有一个Converter
接口(interface)。然后你可以为每个 Mimetype 创建一个类,例如:
public interface Converter {
public void convertToMp3();
public void convertToOgg();
}
public class MpegConverter implements Converter {
public void convertToMp3() {
//Code here
}
public void convertToOgg() {
//Code here
}
}
对于每个转换器,您都需要一个这样的类。然后你可以设置这样的 map :
Map<String, Converter> mimeTypeMap = new HashMap<String, Converter>();
mimeTypeMap.put("audio/mpeg", new MpegConverter());
然后你的 convertToMp3
方法就变成这样:
Converter converter = mimeTypeMap.get(mimeType);
converter.convertToMp3();
使用这种方法,您将来可以轻松添加不同的转换器。
全部未经测试,可能无法编译,但你明白了
关于java - 将许多 'if else' 语句转换为更简洁的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56875607/