原型模式(Prototype Pattern):
1、这个模式的核心是一个clone方法,通过这个方法进行对象的拷贝,Java提供了一个Cloneable接口来标示这个对象是可拷贝的,这个接口只是一个标记作用,在JVM中具有这个标记的对象才有可能被拷贝,重写clone()方法。
2、对象拷贝时,类的构造函数是不会被执行的。
3、浅拷贝和深拷贝问题。内部的数组和引用对象不拷贝,其他的原始类型比如int,long,String(Java就希望你把String认为是基本类型,String是没有clone方法的)等都会被拷贝的。
4、原型模式适用场景:一是类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等;二是通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式;三是一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法创建一个对象,然后由工厂方法提供给调用者。