设计模式:原型模式
什么是原型模式?
原型模式(英文:Prototype Pattern),通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。

一句话归纳
拔一根猴毛,吹出千万个。
代码示例
众所周知,在中国四大名著《西游记》里孙悟空,本领高强,上天遁地,无所不能,他有一个本领就是“拔一根猴毛,吹出千万个”。

适用性
以下场景我建议你考虑使用:
类的初始化需要消耗很多资源;
构造函数比较复杂的时候;
循环体中产生大量对象的时候;
new 产生对象时需要大量繁琐的工作时候(权限、数据准备等 );
一个对象有多个修改者的时候;
局限性
以下场景我建议你谨慎使用:
必须实现Cloneable接口;
对现有类进行改造的时候;
要使用clone方法,类的成员变量不能加final关键字;
浅拷贝和深拷贝的问题。
深克隆和浅克隆
浅拷贝:只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝,还是指向本对象的内部元素地址。
深拷贝:你修改你的,我修改我的,不相互影响。
clone()方法的原理是从内存(具体来讲是堆内存)以二进制流的方式进行拷贝,重新分配一个内存块,所以构造器没有执行。
与通过一个类的实例化对象不同的是,原型模式是通过拷贝一个现有对象生成对象,浅拷贝是通过clone()方法,深拷贝是通过实现Serializable读取二进制流。

写在最后
最后,好兄弟,记得点赞,关注,谢谢。
