创建类集合的最佳方法

时间:2010-04-18 19:35:40

标签: delphi delphi-2010

我正在尝试创建一些类,允许我检索和操作应用程序将创建和管理的一组备份。

我已经提出了以下代码(尚未测试),但我不确定这是否是实现此目标的最佳方式,或者是否有更简单/更好的方法。我正在使用Delphi 2010。

我有一个包含备份详细信息(TBackupItem)的类,然后我需要一个包含TBackupItem集合的类,最后我将有一个类来管理备份的读取和写入,并且还暴露了一个访问TBackupItem集合的属性。

type
  TBackupItem = class
  private
    FBackupProgram: string;
    FBackupProgramVersion: string;
    // There are more variables and properties but for the sake of simplicity I've listed only two
  public
    property BackupProgram: string read FBackupProgram write FBackupProgram;
    property BackupProgramVersion: string read FBackupProgramVersion write FBackupProgramVersion;
  end;

  TBackupsList = class(???)
  private
    // This class will hold a list of TBackupItem. What should I use to accomplish this?
  end;

  TBackupsManager = class(TObject)
  private
    FBackups: TBackupsList;
  public
    property Backups: TBackupsList read FBackups write FBackups;
  end;

你们有没有关于实现这个目标的最佳方式的评论和/或例子?

谢谢!

1 个答案:

答案 0 :(得分:12)

在Delphi 2010中,最好的方法是使用Generics。

使用此代替自定义类TBackupsList

TBackupsManager = class
private
  FBackups: TObjectList<TBackupItem>;

(您必须包含Generics.Collections)。

如果您的收藏集需要更多方法,则可以保留TBackupsList并从TObjectList<TBackupItem>继承:

TBackupsList = class(TObjectList<TBackupItem>)      
public 
  function MyAdditionalMethod: Integer;
end;

编辑:如果您想使用自定义TBackupsList,但又不想拥有所有公共方法TObjectList,则无法使用继承。相反,你必须使用组合:

TBackupsList = class
private
  FItems: TObjectList<TBackupItem>
public 
  //Duplicates of the original TObjectList public methods accessing FItems.
end;