定义

原型模式时指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式

应用场景

  • 类初始化消耗资源较多
  • new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)
  • 构造函数比较复杂
  • 循环体中生成大量对象时

优点

  • 性能优良,Java自带的原型模式是基于内存二进制流的拷贝,比直接new一个对象性能上提升了许多
  • 可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份并将其状态保存起来,简化了创建过程

缺点

  • 必须配备克隆(或者可拷贝)方法
  • 当对已有类进行改造的时候,需要修改代码,违反了开闭原则。
  • 深拷贝、浅拷贝需要运用得当

克隆破坏单例模式

如果我们克隆的目标对象是单例的对象,深克隆就会破坏单例。
解决办法:可以禁止深克隆。要么你的单例类不实现Cloneable接口;要么我们重写
clone()方法,在clone方法中返回单例对象即可