原型模式的原理与应用

如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。

何为“对象的创建成本比较大”?

如果对象中的数据需要经过复杂的计算才能得到(比如排序、计算哈希值),或者需要从 RPC、网络、数据库、文件系统等非常慢速的 IO 中读取,这种情况下,我们就可以利用原型模式,从其他已有对象中直接拷贝得到,而不用每次在创建新对象的时候,都重复执行这些耗时的操作。

原型模式的实现方式:深拷贝和浅拷贝

浅拷贝: 复制 hashMap

image.png

深拷贝: 复制 hashMap+data

image.png

深拷贝的实现

  • 递归 clone
  • 序列化/反序列化

更快、更省内存的实现方式

  1. 浅拷贝原 hashMap
  2. 使用新 k-v 设置新值

不知道 Go 中如何拷贝.