3

我正在与另一位开发人员进行辩论,他不喜欢我java.io.File为我们的自定义需求进行子类化的想法(例如,有一个AWSFile, 或GoogleCloudStorageFile, (为了争论),我们需要重写一些方法像listFiles(),getAbsoluteFile等)。什么时候可以分班java.io.File

例如,为什么没有java.io.File可以实现的通用接口,以便它更通用?这是故意这样做的吗?

我想了解我的方法是好是坏,正如我之前在其他 API 中看到的那样(如果我没记错的话,我TrueZip不久前也看到过同样的方法)。

这个问题的目的不是要引发一场激烈的战争或任何事情,而是要获得一个示例,说明如何实现不同类型的File实体(AWSFileJDBCFile等),并可能获得一个有意义的利弊列表。

4

2 回答 2

1

我个人的偏好是您创建一个接口RemoteFile并在那里实现远程文件所需的方法。

我建议您在其中放置远程获取和设置文件所需的所有方法类型。

public interface RemoteFile {
    public File getLocalFile();
    public String getRemotePath();
    public boolean isDirectory();
    public List<RemoteFile> listFiles();
    ... etc...
}
于 2016-12-12T10:46:44.187 回答
-1

子类将与超类紧密耦合,您的代码会很弱。如果可能,您必须在继承之前尝试委托。

public class YourFileWrapper {

private File yourFile;


public File getYourFile() {
    return yourFile;
} 
//rest of your code
于 2016-12-12T10:43:41.800 回答