什么是原型模式?

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

原型模式的两种实现方法

原型模式有两种实现方法,深拷贝浅拷贝。浅拷贝只会复制对象中基本数据类型数据和引 用对象的内存地址,不会递归地复制引用对象,以及引用对象的引用对象……而深拷贝得到 的是一份完完全全独立的对象。所以,深拷贝比起浅拷贝来说,更加耗时,更加耗内存空 间。
如果要拷贝的对象是不可变对象,浅拷贝共享不可变对象是没问题的,但对于可变对象来 说,浅拷贝得到的对象和原始对象会共享部分数据,就有可能出现数据被修改的风险,也就 变得复杂多了。除非像我们今天实战中举的那个例子,需要从数据库中加载 10 万条数据并 构建散列表索引,操作非常耗时,比较推荐使用浅拷贝,否则,没有充分的理由,不要为了 一点点的性能提升而使用浅拷贝。