原理和应用

是用于创建重复对象有一定成本,需要保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

实现方式

原型模式有两种实现方法,深拷贝和浅拷贝。

浅拷贝

浅拷贝只会复制对象中基本数据类型数据和引用对象的内存地址,不会递归地复制引用对象,以及引用对象的引用对象。

深拷贝

深拷贝得到的是一份完完全全独立的对象。所以,深拷贝比起浅拷贝来说,更加耗时,更加耗内存空间。
1.递归拷贝对象,直到对象只包含基本类型或没有引用为止
2 .序列号和反序列号
如果要拷贝的对象是不可变对象,浅拷贝共享不可变对象是没问题的,但对于可变对象来说,浅拷贝得到的对象和原始对象会共享部分数据,就有可能出现数据被修改的风险。除非操作非常耗时,才考虑使用浅拷贝,否则,没有充分的理由,不要为了一点点的性能提升而使用浅拷贝。

若有收获,就点个赞吧