克隆原型设计模式的功能吗?

时间:2018-09-02 22:56:46

标签: oop design-patterns copy prototype clone

在OOP中,原型设计模式最重要的部分之一就是我们不会从头开始创建新对象,我们只是使用clone()函数从现有对象中克隆它们。

clone()函数是深拷贝还是浅拷贝?

如果它是一个深层副本,那么我将理解所有内容,但是如果它是浅层副本,那么如果两个不同的对象(一个使用原型模式从另一个对象创建的对象)监视相同的状态对象,那将是一团糟,这意味着这些对象不是完全没有区别(它们被链接在一起,因为它们共享相同的状态对象)。

有人可以向我澄清这种情况吗?

1 个答案:

答案 0 :(得分:1)

Java Object clone方法实现了Prototype设计模式。使用prototypical实例创建一个新实例。但是clone只是给您一个浅表副本,而不是深表副本。因此,这是一个危险的副本。如果需要深层副本,则必须明确实现它。 clone复制原始值,但不复制对象引用。因此,原始对象和克隆对象都将指向相同的对象引用,并且如果一个对象引用被修改,则将其应用于另一个对象引用,从而使对象处于危险状态。