原型设计模式的克隆函数?

3
在面向对象编程中,原型设计模式最重要的部分之一是我们不需要从头开始创建新的对象,而是使用现有对象的clone()函数进行克隆。那么clone()函数是深拷贝还是浅拷贝呢?
如果它是深拷贝,那么我就理解了一切,但如果它是浅拷贝,那么如果两个不同的对象(一个是使用原型模式创建的另一个对象)观察相同的状态对象,那么这将会很混乱,这意味着这些对象根本不是不同的(它们链接在一起共享相同的状态对象)。
有人能为我澄清这种情况吗?
1个回答

2
Java的Object clone方法实现了Prototype设计模式。使用原型实例创建一个新实例。但是clone只会给你一个浅拷贝,而不是深拷贝。因此它是一种相当危险的拷贝。如果您需要深层复制,您必须明确地实现它。clone会复制基本值,但不会复制对象引用。因此,原始对象和克隆对象将指向相同的对象引用,如果其中一个修改了对象,那么另一个也会应用相同的修改,使您的对象处于危险状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接