我有一個類TTask我從中得到許多其他任務:如何設計一個'開放'類的列表?
TTask= class(TObject)
TaskName: string;
TaskDescription: string;
end;
TTask1= class(TTask)
TTask2= class(TTask)
TParser= class(TTask)
etc...
(each class implemented in its own unit)
每個子任務都有自己的名稱和說明:
constructor TParser.Create;
begin
inherited;
TaskName := 'Parser';
TaskDescript:= 'Parses a result file';
end;
的GUI:
在運行時我想填充一個名爲「可用任務」的列表框名單,名稱爲TTask1,TTask2等。我想讓用戶將任務從「可用」拖放到「當前任務」列表框中。
在運行時填充可用列表框,因爲TTask1,TTask2沒有實例化,所以使用類var類來獲取TaskName可能會很明智。否則,如果我更改了任務的名稱,我將不得不在兩處更改代碼。
如果可能的話,我應該可以在完成代碼後,輕鬆地將更多任務添加到「可用」列表框中。
做這樣一個動態設計的最好方法是什麼?
什麼我不喜歡的大多是這樣的設計:
var Task: TTask;
...
if lstAvailTasks.SelectedItem= 'Parser' then
begin
Task:= TTask1.Create;
Tasks.Add(Task)
end
else
etc
註冊每個任務類到您的工廠(本單元的「初始化」部分是理想的地方)。 – TLama
註冊意味着將它們添加到列表,字典等。 –