你有一个类函数可以创建一个类的实例:
TMyClass = class(TSomeParent) public class function New(AValue : integer) : TMyClass; end; TDerivedClass = class(TMyClass) public function Beep; end;
然后按如下方式使用它
... var myList : TList<T>; item : TDerivedClass; begin myList.Add(TDerivedClass.New(1)) myList.Add(TDerivedClass.New(3)) myList.Add(TDerivedClass.New(5)) for item in myList do item.Beep; //times the count in the class function ...
如果是这样,那个功能代码是什么样的?您是否使用TObject的NewInstance方法并且每次为每个派生类重新实现?使用构造函数是否更安全/更好?
目标是在命令模式中使用此方法并使用类类型和接收器加载命令列表,例如:
//FYI: document is an instance of TDocument commandList.Execute(TOpenDocument(document)); commandList.Execute(TPasteFromClipboard(document)); //... lots of actions - some can undo commandList.Execute(TPrintDocument(document)); commandList.Execute(TSaveDocument(document));
原因是某些命令将通过文本/脚本指定,需要在运行时解析.