第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將許多“if else”語句轉(zhuǎn)換為更清晰的方法

將許多“if else”語句轉(zhuǎn)換為更清晰的方法

將許多“if else”語句轉(zhuǎn)換為更清晰的方法我的代碼在這里檢測是否mimeType等于某種MIME類型,如果是,它將進(jìn)行某種轉(zhuǎn)換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}我縮短了我的代碼,因?yàn)樗泻芏嗥渌鹖f語句,什么設(shè)計(jì)模式適合刪除許多if和else或if語句?
查看完整描述

3 回答

?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊

你可以有一個(gè)Converter界面。然后你可以為每個(gè)Mimetype創(chuàng)建一個(gè)類,如:

public interface Converter {

    public void convertToMp3();
    public void convertToOgg();}public class MpegConverter implements Converter {

    public void convertToMp3() {
        //Code here
    }

    public void convertToOgg() {
        //Code here
    }}

對于每個(gè)轉(zhuǎn)換器,您都需要這樣的類。然后你可以設(shè)置這樣的地圖:

Map<String, Converter> mimeTypeMap = new HashMap<String, Converter>();mimeTypeMap.put("audio/mpeg", new MpegConverter());

然后你的convertToMp3方法變成這樣:

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

使用這種方法,您可以在將來輕松添加不同的轉(zhuǎn)換器。

所有未經(jīng)測試的,可能都沒有編譯,但你明白了


查看完整回答
反對 回復(fù) 2019-08-16
?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果使用pre-JDK7,則可以為所有MIME類型添加枚舉:

  public static enum MimeTypes {
      MP3, WAV, OGG  }

  public class Stuff {
      ...
      switch (MimeTypes.valueOf(mimeType)) {
          case MP3: handleMP3(); break;
          case WAV: handleWAV(); break;
          case OGG: handleOGG(); break;
      }
  }


查看完整回答
反對 回復(fù) 2019-08-16
?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

考慮使用策略設(shè)計(jì)模式和a Map調(diào)度到適當(dāng)?shù)牟呗浴H绻阈枰~外的功能,除了特定mimeType的轉(zhuǎn)換,或轉(zhuǎn)換器是大而復(fù)雜的代碼,你會(huì)希望將每個(gè)轉(zhuǎn)換器放在自己的.java文件中。

 interface Convertor {
    void convert(File src, File target);
 }

 private static void convertWav(File src, File target) {
    ...
 }

 ...

 private static final Map< String, Convertor > convertors = new ...;
 static {
    convertors.put("audio/wav", new Convertor {
       void convert(File src, File target) {
          convertWav(src, target);
       }
    });
    convertors.put("audio/ogg", new Convertor {
       void convert(File src, File target) {
          convertOgg(src, target);
       }
    });
    ...
 }

 public void convertToMp3(File src, File target, String mimeType){
     final Convertor convertor = convertors.get(mimeType);
     if (convertor == null ) {
        ...
     } else {
        convertor.convert(src, target);
     }
 }


查看完整回答
反對 回復(fù) 2019-08-16
  • 3 回答
  • 0 關(guān)注
  • 812 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號