概述
英文:Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.
译文:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象
角色
客户(Client)
抽象原型(Prototype)
该角色是一个抽象角色,通常由一个Java接口或抽象类实现,给出所有的具体原型类所需的接口。
具体原型(Concrete Prototype)
该角色是被复制的对象,必须实现抽象原型接口。
应用
优点
性能优良:原型模式是在内存二进制流的复制,要比直接new一个对象性能好,特别是在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。
逃避构造函数的约束:这既是优点也是缺点,直接在内存中复制,构造函数是不会执行的,因此减少了约束,需要在实际应用时进行权衡考虑。
使用场景
资源优化场景,类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。
性能和安全要求的场景,通过new产生一个对象需要非常烦琐的数据准备或访问权限,可以使用原型模式。
一个对象多个修改者的场景,一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多个对象供调用者使用。
