原型设计模式的克隆功能?
Clone function for prototype design pattern?
OOP 中原型设计模式最重要的部分之一是我们不会从头开始创建新对象,我们只是使用现有对象的 clone()
函数克隆它们。
那么clone()
函数是深拷贝还是浅拷贝?
如果是深拷贝,那么我什么都明白,但如果是浅拷贝,如果两个不同的对象(一个使用原型模式从另一个对象创建)观察相同的状态对象,那将是一团糟,这意味着这些对象完全没有不同(它们是链接的,因为它们共享相同的状态对象)。
谁能给我解释一下这个情况?
Java Object
clone
方法实现了 Prototype
设计模式。使用 prototypical
实例创建一个新实例。但是 clone
只是给你一个浅拷贝,它不是深拷贝。所以这是一个相当危险的副本。如果你需要一个深拷贝,你必须显式地实现它。 clone
复制原始值,但不复制对象引用。因此,原始对象和克隆对象都将指向相同的对象引用,并且如果其中一个修改了相同的对象引用,则会使您的对象处于危险状态。
OOP 中原型设计模式最重要的部分之一是我们不会从头开始创建新对象,我们只是使用现有对象的 clone()
函数克隆它们。
那么clone()
函数是深拷贝还是浅拷贝?
如果是深拷贝,那么我什么都明白,但如果是浅拷贝,如果两个不同的对象(一个使用原型模式从另一个对象创建)观察相同的状态对象,那将是一团糟,这意味着这些对象完全没有不同(它们是链接的,因为它们共享相同的状态对象)。
谁能给我解释一下这个情况?
Java Object
clone
方法实现了 Prototype
设计模式。使用 prototypical
实例创建一个新实例。但是 clone
只是给你一个浅拷贝,它不是深拷贝。所以这是一个相当危险的副本。如果你需要一个深拷贝,你必须显式地实现它。 clone
复制原始值,但不复制对象引用。因此,原始对象和克隆对象都将指向相同的对象引用,并且如果其中一个修改了相同的对象引用,则会使您的对象处于危险状态。