如何扩展apache FTPFile的功能?

时间:2019-01-30 08:13:11

标签: java apache oop inheritance delegation

我正在用Java学习OOP,但遇到了一个问题。我需要创建一个自定义对象Folder,该对象保留FTPFile对象的功能,并向其添加更多功能。

FTPClient client = new FTPClient();
FTPFile[] folders = client.listFiles();

我需要将数组folders中的所有对象从FTPFile转换为Folder对象,然后考虑在子类的构造函数中设置超类的状态:

public Folder(FTPFile ftpF) {
    super.setName(ftpF.getName());
    super.setLink(ftpF.getLink());
    super.setHardLinkCount(ftpF.getHardLinkCount());
    super.setGroup(ftpF.getGroup());
    super.setSize(ftpF.getSize());
    super.setTimestamp(ftpF.getTimestamp());
    super.setType(ftpF.getType());
    super.setUser(ftpF.getUser());
}

但是我不知道这是否是一个好习惯。我应该这样做还是应该以{{1​​}}对象的状态存储FTPFile对象并在需要时调用其功能?

1 个答案:

答案 0 :(得分:0)

委派

  

还是我应该将FTPFile对象存储为Folder对象的状态,并在需要时调用其功能?

您遇到了delegation的想法。这是一种无需继承即可扩展类功能的灵活方法。

示例

d

假设您要扩展class Folder { private FTPFile ftpFile; public FTPFile(FTPFile ftpFile) { this.ftpFile = ftpFile; } // more code.. } 的方法setName(string),并且所有名称都应大写:

FTPFile