gpt4 book ai didi

java多态创建对象

转载 作者:行者123 更新时间:2023-12-01 16:57:49 25 4
gpt4 key购买 nike

我需要制作一个对文本、音频和视频文件运行处理的程序,

我创建了一个接口(interface)类和三个继承它的类

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对象...

<小时/>

这是经典Factory Pattern 。为了实现正确的行为,在这种情况下,您可以创建一个通用对象并检查扩展以创建具体实例:

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;

}

此外,我强烈建议使用 Factory 类,如 link 中所述。 (第 3 步)返回正确的对象。

关于java多态创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com