我正在尝试创建一些类,允许我检索和操作应用程序将创建和管理的一组备份。
我已经提出了以下代码(尚未测试),但我不确定这是否是实现此目标的最佳方式,或者是否有更简单/更好的方法。我正在使用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;
你们有没有关于实现这个目标的最佳方式的评论和/或例子?
谢谢!
答案 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;