我有各种类实例的列表。我需要能够在不知道要创建什么的情况下创建一个类的新实例。所有涉及的对象都具有相同的祖先。对象成员变量的实际复制很容易......这是我遇到问题的新对象的创建。
诚然,我可以做这样的事情:
case MyObjectTypeInstance.MyTypeEnum of
obj1:
Result:=TObjectType1.Create;
obj2:
Result:=TObjectType2.Create;
obj3:
Result:=TObjectType3.Create;
end;
这不符合“开放/封闭原则”。
最初我以为我可以做类似“Result:=MyObjectTypeInstance.Create;”的事情 但是由于析构函数的困难,这并没有像希望的那样工作。
这是我应该怎么做的最新猜测......
var
fooA, fooB:TFoo;
begin
fooA:=TFoo2.Create; // it could be any of many types
fooB:=? // how to create fooB of same class type as fooA????
// do something
fooA.Free;
fooB.Free;
end;
我会认为这会更容易!
感谢您的帮助!