定义
原型模式时指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式
应用场景
- 类初始化消耗资源较多
- new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)
- 构造函数比较复杂
- 循环体中生成大量对象时
优点
- 性能优良,Java自带的原型模式是基于内存二进制流的拷贝,比直接new一个对象性能上提升了许多
- 可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份并将其状态保存起来,简化了创建过程
缺点
- 必须配备克隆(或者可拷贝)方法
- 当对已有类进行改造的时候,需要修改代码,违反了开闭原则。
- 深拷贝、浅拷贝需要运用得当
克隆破坏单例模式
如果我们克隆的目标对象是单例的对象,深克隆就会破坏单例。
解决办法:可以禁止深克隆。要么你的单例类不实现Cloneable接口;要么我们重写
clone()方法,在clone方法中返回单例对象即可