原型模式的定义:用原型实例创建对象种类,并且通过拷贝这些原型创建新的对象。
原型模式的使用方式:
1、实现Cloneable接口;
2、重写Object类中的clone方法。
原型模式注意点:
(1)对象进行拷贝时,构造函数不会被执行(直接在内存中进行拷贝);
(2)深拷贝和浅拷贝(浅拷贝:只拷贝对象,对象内部的数组以及对象引用不会被拷贝,String类型对象除外);
(3)要使用clone方法,就不要在类的成员变量上加上final关键字。
原型模式的应用场景:
(1)资源优化场景:类初始化的时候需要消化非常多的资源,这个资源包括数据、硬件资源等
(2)性能和安全的要求的场景:通过new产生一个对象需要非常繁琐的数据准备或者访问权限,则可以通过原型模式
(3)一个对象多个修改者的场景:一个对象需要提供给多个对象访问时,而且各个调用者可能会修改其值时,可以考虑原型模式拷贝多个对象供对个对象调用(eg:页面调用Struts的action时,通常使用scope="prototype"这一配置)