所以我正在学校学习设计模式。今天我被告知“原型(prototype)”设计模式。
我一定错过了一些东西,因为我没有看到它的好处。我在网上看到有人说它比使用 new 更快,但这没有意义;在某些时候,无论新对象如何创建,都需要为其分配内存。
这种模式不和“先有鸡还是先有蛋”的问题在同一个循环中运行吗?由于原型(prototype)模式本质上只是克隆对象,因此在某些时候必须创建原始对象本身(即不克隆)。这意味着我需要拥有我想要克隆的每个对象的现有副本,并准备好克隆?
谁能解释一下这个模式的用途是什么?
请您参考如下方法:
原型(prototype)模式有一些好处,例如:
- 它消除了初始化对象的(可能昂贵的)开销
- 它简化并可以优化相同类型的多个对象将具有大部分相同数据的用例
例如,假设您的程序使用的对象是根据通过网络检索到的大多数不变的信息解析的数据创建的。原型(prototype)模式可以用于在需要新对象时简单地复制原始对象,而不是在每次创建新对象时检索数据并重新解析它。
此外,假设该对象可能具有占用大量内存的数据,例如表示图像的数据。可以通过使用写时复制样式继承来减少内存,其中显示原始的、不重复的数据,直到代码尝试更改该数据。然后,新数据将屏蔽以引用原始数据。