Skip to content

Latest commit

 

History

History
13 lines (13 loc) · 1.6 KB

原型模式.md

File metadata and controls

13 lines (13 loc) · 1.6 KB

原型模式介绍

原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的"克隆"。被复制的实例就是我们所称的"原型",这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。

原型模式的定义

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

原型模式的使用场景

  • 类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。
  • 通过new产生一个对象需要非常繁琐的数据准备或访问权限,这时可以使用原型模式。
  • 一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用,即保护性拷贝。需要注意的是,通过实现Cloneable接口的原型模式在调用clone函数构造实例时并不一定比通过new操作速度快,只有当通过new构造对象较为耗时或者说成本较高时,通过clone方法才能获得效率上的提升。因此,在使用Cloneable时需要考虑构建对象的成本以及做一些效率上的测试。

原型模式的UML图

  • Clent:客户端用户
  • Prototype:抽象类或接口,声明具备clone能力。
  • ConcretePrototype:具体的原型类。