oop - 原型(prototype)设计模式的克隆功能?

标签 oop design-patterns copy prototype clone

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

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

如果它是一个深拷贝,那么我明白一切,但如果它是浅拷贝,如果两个不同的对象(一个使用原型(prototype)模式从另一个对象创建)观察相同的状态对象,那将是一团糟,这意味着这些对象不是完全不同(它们是链接的,因为它们共享相同的状态对象)。

谁能给我解释一下这个情况?

最佳答案

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

关于oop - 原型(prototype)设计模式的克隆功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52141568/

相关文章:

c# - ASP.NET Core,运行时如何推理启动类?

linux - 传输文件!!!从unix服务器到linux服务器

android - 从 Android 上的 TextView 复制文本

delphi - 从单词位置检测文本列

php - 复制时使用远程 Url 或本地路径是否具有相同的性能?

php - 为什么覆盖方法参数违反了 PHP 中的严格标准?

java - OOP 二十一点游戏(创建牌组)

c#绑定(bind)到接口(interface)时向下转型

design-patterns - 垂头丧气可以吗?

c++ - C++ 中的线程安全单例实现