user962206 user962206 - 4 months ago 20x
Java Question

Converting many 'if else' statements to a cleaner approach

My code here detects if the

is equals to some MIME type, if it is, it will do a certain conversion

public void convertToMp3(File src, File target,String mimeType){
}else if(mimeType.equals("audio/wav")){
}else if(mimeType.equals("audio/ogg")){
}else if(...){
... //More if and else here

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?


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());

Then your convertToMp3 method becomes like this:

Converter converter = mimeTypeMap.get(mimeType);

Using this approach you could easily add different converters in the future.

All untested, probably doesn't compile, but you get the idea