SORU
3 Ocak 2013, PERŞEMBE


Daha temiz bir yaklaşım için pek çok 'eğer başka bir' ifadeleri dönüştürme

Benim kod burada mimeType MIME bazı tip eşittir, eğer, eğer, eğer, belirli bir dönüşüm yapacağız algılar

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
}

Bir sürü var çünkü benim kod kısaltılmış vareğer başkabirçok temizlenmesi için uygundur Ne ifadelereğervebaşkayaeğer başkatablolar?

CEVAP
3 Ocak 2013, PERŞEMBE


Converter bir arayüzü var. Sonra Mime tipi: her biri için bir sınıf oluşturabilirsiniz

public interface Converter {

    public void convertToMp3();
    public void convertToOgg();

}

public class MpegConverter implements Converter {

    public void convertToMp3() {
        //Code here
    }

    public void convertToOgg() {
        //Code here
    }

}

Her bir dönüştürücü için böyle bir sınıf gerekir. O zaman böyle bir harita ayarlayabilirsiniz

Map<String, Converter> mimeTypeMap = new HashMap<String, Converter>();

mimeTypeMap.put("audio/mpeg", new MpegConverter());

Sonra convertToMp3 yöntemi böyle olur:

Converter converter = mimeTypeMap.get(mimeType);
converter.convertToMp3();

Bu yaklaşımı kullanarak kolayca gelecekte farklı dönüştürücüler ekleyebilirsiniz.

Tüm test edilmemiş, muhtemelen derleme değil, ama fikir olsun

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • BurnedInDotCom

    BurnedInDotC

    3 NİSAN 2010
  • humanHardDrive

    humanHardDri

    16 Mart 2011