你有一个类函数可以创建一个类的实例:
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));
原因是某些命令将通过文本/脚本指定,需要在运行时解析.
解决方法
Can you have a class function that creates an instance of a class.
Is it saver/better to use the Constructor?
构造函数是一个创建类实例的类函数.
刚刚放:
constructor New(); virtual;
你很高兴.
虚拟; part将允许您为所有后代类调用相同的New()构造函数.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。