原型设计模式



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

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

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

同样我可以做:

Typist typistCopy = typist; 

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

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

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

Typist typistCopy = typist;

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

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

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

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

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

添加一个现实世界的类比:

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

这将创建一个副本。现在有两页纸,你有原件,有人递给复印件。

Page paper = yourPaper;

没有制作副本。你有一页纸,别人也抓住了它。现在你们都抓住那一页纸。

你需要决定你想要什么。

最新更新