原型模式设计模式

原型模式设计模式定义

用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的心对象。

允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

原型模式设计模式详解

使用场景

  • 在项目中,如果存在大量相同或相似对象的创建,如果用传统的构造函数来创建对象,会比较复杂和耗费资源,用原型模式生产对象就很高效。
  • Linux 安装的镜像,同一份镜像备份,就可以安装到不同的机器上。
  • 对象创建过程比较麻烦,但复制比较简单的时候。
  • 在 Java 中被拷贝对象需要实现 Cloneable 接口,重写 Object 类中的 clone 方法。

原型模式设计模式优缺点

优点

  1. 使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。
  2. 简化对象的创建,是的创建对象就像我们在编辑文档时的复制粘贴一样简单。

缺点

  1. 使用原型模式时不能够有 final 对象。
  2. Object 类的 clone 方法只会拷贝对象中的基本数据类型,对于复杂的数据类型只能够另行拷贝。
  3. 使用原型模式复制对象不会调用类的构造方法。对象的复制时通过调用 Object 类的 clone 方法来完成的,它直接在内存中复制数据,所以不会调用类的构造方法。单例模式中,只要将构造方法设置为私有的访问权限,就可以实现单例。但是 clone 方法直接无视私有访问权限,单例模式和原型模式在使用过程中是冲突的,需要特别注意。

原型模式设计模式总结

设计模式中 Java 实现原型模式的类必须继承 Cloneable 接口,并且对接口中的 clone 方法进行实现。