簡體   English   中英

java多態創建對象

[英]java polymorphism creating object

我需要制作一個程序來處理文本,音頻和視頻文件,

我創建一個接口類和三個繼承它的類

public interface FileProcess{
    public void process();    
}

public class TextProcess implements FileProcess{ 
    public void process(){System.out.print("Im Text file")};
}

public class VideoProcess implements FileProcess{ 
   public void process(){System.out.print("Im Video file")};
}

public class AudioProcess implements FileProcess{ 
   public void process(){System.out.print("Im Audio file")};
}

我運行測試以從發布請求中獲取文件(例如a.jpg或12.txt或aaa.pdf),我如何知道要運行哪個文件進程? 換句話說,我怎么知道應該創建哪個對象進程?

首先請注意您的方法不正確,缺少"

public class VideoProcess implements FileProcess{ 
   public void process(){System.out.print("Im Video file")};
   //                                                   ^ here!
}

您要么沒有ImageProcess對象...


這是經典的工廠模式 為了實現正確的行為,在這種情況下,您可以創建一個通用對象並檢查擴展名以創建具體實例:

FileProcess process = null;
String filename = "a.jpg";
String extension = filename(0, filename(lastIndexOf(".");

並使用它來選擇創建哪種對象:

switch(extension) {
    // catch multiple image extensions:
    case "jpg":
    case "png":
        process = new VideoProcess();
        break;

    // catch text
    case "txt":
        process = new TextProcess();
        break;

    // catch multiple audio extensions:
    case "wav":
    case "mp3":
        process = new AudioProcess();
        break;

}

同樣,我強烈建議使用鏈接 (第3步 )中描述的Factory類,該類返回正確的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM