原型设计模式

时间:2019-04-24 11:39:08

标签: c# design-patterns

为什么我需要使用原型设计模式?取而代之的是,我可以直接为该值赋值吗?例如

按照原型设计模式,我们必须像这样克隆:

Typist typistCopy = (Typist)typist.Clone();

我可以这样做:

Typist typistCopy = typist; 

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

2 个答案:

答案 0 :(得分:2)

您演示的两个操作具有不同的作用。您需要哪一个取决于您要做什么。

不会创建对象的副本/克隆:

Typist typistCopy = typist;

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

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

Typist typistCopy = (Typist)typist.Clone();

(或者至少允许对象本身决定是否需要复制/克隆,并执行其自身的封装逻辑,以表示对对象的含义。)

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

答案 1 :(得分:0)

添加真实世界的比喻:

Page paper = (Page)yourPaper.Clone();

这将创建一个副本。现在有两页纸,您有正本,有人交给了副本。

Page paper = yourPaper;

未复制。您有一纸纸,其他人也抓住了它。现在你们都握住那一页纸。

您需要决定想要什么。