delphi原型模式

前端之家收集整理的这篇文章主要介绍了delphi原型模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道,Delphi的RTTI中是否有与MemberwiseClone在C#中执行相同操作的原型模式的简单实现.
我看到了这个模式的一些Delphi实现,其中创建了一个新对象(TMyObject.Create),并且它的属性分配了来自原型对象的值.我可能错了,但如果我们以相同的基本方式创建对象,我就看不到模式的好处.

谢谢.

解决方法

没有任何内置可以为您执行深度克隆.我相信你可以根据新的RTTI写一个深度克隆,但我希望它是一项非常重要的工作.

如果你处理的是足够简单的类型,它可以正常工作,但你很容易遇到严峻的挑战.例如,我的头顶:

>需要按特定顺序创建某些对象组.
>不应克隆某类成员,例如:参考计数.你怎么认识那些有RTTI的人?
>你如何处理单身人士?
>那些需要建立的外在参考怎么样?假设您克隆通常由工厂创建的对象.如果该工厂拥有对其创建的对象的引用,那么它背后可能会破坏您的设计.

您可以通过定义一个基本的Clone()方法来实现您的原型模式,该方法将RTTI用于简单类型,然后您必须覆盖它以获得更复杂的东西.就个人而言,我将继承TPersistent,并根据Assign创建我的Clone()方法.

猜你在找的Delphi相关文章