概述
- 原型模式是从一个对象出发得到一个和自己有相同状态的新对象的成熟模式,该模式的关键是将一个对象定义为原型,并为其提供复制自己的方法。
原型模式的结构
原型模式的结构中包括两种角色。
- 抽象原型(Prototype)
- 具体原型(ConcretePrototype)
抽象原型(Prototype)
- 一个接口。
- 负责定义对象复制自身的方法。
具体原型(ConcretePrototype)
- 实现Prototype接口的类。
- 具体原型实现抽象原型中的方法,以便所创建的对象调用该方法复制自己。
原型模式的优点
- 当创建类的新实例的代价更大时,使用原型模式复制一个已有的实例可以提高创建新实例的效率。
- 可以动态地保存当前对象的状态。在运行时,可以随时使用对象流保存当前对象的一个复制品。
- 可以在运行时创建新的对象,而无须创建一系列类和继承结构。
- 可以动态地添加、删除原型的复制品。
适合原型模式的情景
- 程序需要从一个对象出发,得到若干个和其状态相同,并可独立变化其状态的对象时。
- 当对象的创建需要独立于它的构造过程和表示时。
- 一个类创建实例状态不是很多,那么久可以将这个类的一个实例定义为原型,那么通过复制该原型得到新的实例可能比重新使用类的构造方法创建新实例更方便。
