成员克隆比创建新对象更便宜吗?

时间:2013-10-26 22:01:16

标签: c# .net clr prototype cloning

我正在阅读有关Prototype创建设计模式的信息,并且发现了一条信息,指出克隆对象的成本要低于创建一个新对象 - 通过调用new运算符。

这是真的,如果是,那为什么呢?

由于

1 个答案:

答案 0 :(得分:2)

克隆确实需要创建一个新对象,因此您不会在初始化的创建部分节省太多。但是,您可以保存其他初始化元素:

  • 如果对象需要填充集合,并且构造函数需要未知数量的元素,则克隆例程可以通过预先调整集合大小来节省一些处理。
  • 如果对象在其构造函数中创建不可变对象,则原型可以将对其自身对象的引用直接设置到结果对象中。由于这些引用的内部对象是不可变的,因此可以共享它们。这样,您的系统可以节省创建这些依赖对象。