一、用途

当创建一个对象的代价很大时,可以创建一个实例原型,以后需要对象时直接从原型克隆。

二、要素

  • 产品接口:需要实现 Cloneable 接口。
  • 产品抽象类:实现产品接口,提供 clone() 方法的具体实现,用于被产品类继承。
  • 实际产品类:内含继承自产品抽象类的 clone() 方法。
  • 示例图:

原型模式.jpg

三、优缺点

  • 可以使类实例在运行时生成,而非编译时生成。
  • 深拷贝和浅拷贝问题:Object.clone() 默认是浅拷贝,若需要深拷贝,需要在覆写时手动实现。