我有各种各样的类实例的列表。我需要能够在不知道要创建什么的情况下创建类的新实例。所有涉及的对象都具有相同的祖先。实际复制对象的成员变量很容易...这是我遇到问题的新对象的创建。
诚然我可以做这样的事情:
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;
我本以为这样会更容易!
谢谢您的帮助!
最佳答案
您可能需要创建一个Abstract Factory或Factory Method类。这些都是常见的Design Patterns,它们是经过测试的可靠开发范例。
关于delphi - 如何创建类的新实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/757280/