首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >原型设计模式

原型设计模式
EN

Stack Overflow用户
提问于 2019-04-24 11:39:08
回答 2查看 192关注 0票数 0

为什么我需要使用原型设计模式?相反,我可以直接分配这个值,对吗?例如

根据原型设计模式,我们必须克隆如下:

代码语言:javascript
运行
复制
Typist typistCopy = (Typist)typist.Clone();

我也可以这样做:

代码语言:javascript
运行
复制
Typist typistCopy = typist; 

原型设计模式在这里的重要性是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-24 11:45:09

您演示的两个操作执行的是不同的操作。你需要哪一个取决于你想做什么。

这不会创建对象的复制/克隆:

代码语言:javascript
运行
复制
Typist typistCopy = typist;

它所做的一切都创建了一个新变量,它引用内存中相同的对象。执行这一行代码之后,仍然只有一个Typist对象。你只有两个变量引用它。对一个变量所做的任何更改都将反映在这两个变量中,因为它们都引用同一个对象。

另一方面,这会创建对象的副本或克隆:

代码语言:javascript
运行
复制
Typist typistCopy = (Typist)typist.Clone();

(或者,至少允许对象本身决定是否需要复制/克隆,并执行自己的封装逻辑,说明对对象意味着什么。)

在执行这一行代码之后,您现在有了两个Typist对象,它们可以相互独立地使用和操作。对一个变量所做的任何更改都不会反映在另一个变量中,因为它们引用不同的对象。

票数 3
EN

Stack Overflow用户

发布于 2019-04-24 11:48:29

为了增加一个真实世界的类比:

代码语言:javascript
运行
复制
Page paper = (Page)yourPaper.Clone();

这将创建一个副本。现在有两页纸,你有你的原件,有人收到了副本。

代码语言:javascript
运行
复制
Page paper = yourPaper;

没有复制。你有一页纸,别人也拿了。现在你们都拿着那一页纸。

你得决定你想要什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55829213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档