为什么我需要使用原型设计模式?相反,我可以直接分配这个值,对吗?例如
根据原型设计模式,我们必须克隆如下:
Typist typistCopy = (Typist)typist.Clone();我也可以这样做:
Typist typistCopy = typist; 原型设计模式在这里的重要性是什么?
发布于 2019-04-24 11:45:09
您演示的两个操作执行的是不同的操作。你需要哪一个取决于你想做什么。
这不会创建对象的复制/克隆:
Typist typistCopy = typist;它所做的一切都创建了一个新变量,它引用内存中相同的对象。执行这一行代码之后,仍然只有一个Typist对象。你只有两个变量引用它。对一个变量所做的任何更改都将反映在这两个变量中,因为它们都引用同一个对象。
另一方面,这会创建对象的副本或克隆:
Typist typistCopy = (Typist)typist.Clone();(或者,至少允许对象本身决定是否需要复制/克隆,并执行自己的封装逻辑,说明对对象意味着什么。)
在执行这一行代码之后,您现在有了两个Typist对象,它们可以相互独立地使用和操作。对一个变量所做的任何更改都不会反映在另一个变量中,因为它们引用不同的对象。
发布于 2019-04-24 11:48:29
为了增加一个真实世界的类比:
Page paper = (Page)yourPaper.Clone();这将创建一个副本。现在有两页纸,你有你的原件,有人收到了副本。
Page paper = yourPaper;没有复制。你有一页纸,别人也拿了。现在你们都拿着那一页纸。
你得决定你想要什么。
https://stackoverflow.com/questions/55829213
复制相似问题