将许多“if else”语句转换为更清洁的方法 [英] Converting many 'if else' statements to a cleaner approach
问题描述
我的代码检测 mimeType
是否等于某些 MIME 类型,如果是,它将进行一定的转换
My code here detects if the mimeType
is equals to some MIME type, if it is, it will do a certain conversion
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 或 p>
I have shortened my code, because it has a lot of else if statements, What design pattern is suitable for removing many if and else or else if statements?
推荐答案
你可以有一个转换器
接口。那么你可以为每个Mimetype创建一个类,如:
You could have a Converter
interface. Then you could create a class for each Mimetype like:
public interface Converter {
public void convertToMp3();
public void convertToOgg();
}
public class MpegConverter implements Converter {
public void convertToMp3() {
//Code here
}
public void convertToOgg() {
//Code here
}
}
每个转换器都需要这样的类。然后你可以设置一个这样的地图:
You would need a class like this for each converter. Then you could set up a map like this:
Map<String, Converter> mimeTypeMap = new HashMap<String, Converter>();
mimeTypeMap.put("audio/mpeg", new MpegConverter());
然后,您的 convertToMp3
方法变为:
Then your convertToMp3
method becomes like this:
Converter converter = mimeTypeMap.get(mimeType);
converter.convertToMp3();
使用这种方法,您将来可以轻松添加不同的转换器。
Using this approach you could easily add different converters in the future.
所有未经测试,可能无法编译,但您可以获得
All untested, probably doesn't compile, but you get the idea
这篇关于将许多“if else”语句转换为更清洁的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!