我的代码在这里检测the mimeType是否等于某种MIME类型,如果是,它将进行一定的转换
mimeType
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 }
我缩短了代码,因为它包含许多其他if语句,哪种设计模式适合于删除许多if and else or else if语句?
你可以有一个Converter接口。然后,你可以为每个Mimetype创建一个类,如下所示:
Converter
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<String, Converter> mimeTypeMap = new HashMap<String, Converter>(); mimeTypeMap.put("audio/mpeg", new MpegConverter());
然后,你的convertToMp3方法将如下所示:
Converter converter = mimeTypeMap.get(mimeType); converter.convertToMp3();
使用这种方法,你将来可以轻松添加不同的转换器。
全部未经测试,可能无法编译,但是你明白了