原型模式数组
主要用于对象的复制,实现一个接口(实现Cloneable接口),重写一个方法(重写Object类中的clone方法),即完成了原型模式。性能
原型模式中的拷贝分为“浅拷贝”和“深拷贝”:spa
浅拷贝:对值类型的成员变量进行值的复制,对引用类型的成员变量只复制引用,不复制引用的对象。对象
深拷贝:对值类型的成员变量进行值的复制,对引用类型的成员变量也进行引用对象的复制。接口
(Object类中clone方法只会拷贝对象中的基本数据类型的值,对于数据中、容器对象、引用对象等都不会拷贝,这就是浅拷贝。若是要实现深拷贝,必须将原型模式中的数组、容器对象、引用对象等另行拷贝。)内存
原型模式的优势:原型
1)若是建立新的对象比较复杂时,能够利用原型模式简化对象的建立过程。容器
2)使用原型模式建立对象比直接new一个对象在性能上要好得多,由于Object类的clone方法是一个本地方法,它直接操做内存中的二进制流,特别是复制大对象时,性能的差异很是明显。变量
原型模式的适用场景:循环
由于以上优势,因此在须要重复地建立类似对象时能够考虑使用原型模式。好比须要在一个循环体内建立对象,假如对象建立过程比较复杂或者循环次数不少的话,使用原型模式不但能够简化建立过程,并且能够使系统的总体性能提升不少。