概述
通过给出一个原型对象来指明所要创建的对象的类型(类型相同、内部状态相同),然后用复制这个原型对象的办法创建出更多相同类型的对象(对象不同)
类图
使用java.lang.Object.clone(Native Method)方法实现对象属性的复制。
原型类必须覆盖java.lang.Object.clone方法,因为Object的方法时protected,外围无法使用。
同时,原型类必须实现java.lang.Cloneable接口,才能调用父类的java.lang.Object.clone方法,否则运行时会出现错误java.lang.CloneNotSupportedException。
注意:浅复制不能保证引用对象符合原型模式
注意:深复制保证引用对象符合原型模式
注意:深复制保证引用对象符合原型模式。使用字节流输入输出转换是实现深拷贝最方便的一种方式。
应用
spring中的singleton和prototype,对于singleton类型,从容器中请求实例,第一次会创建然后置入缓存中,下一次请求实例,都会直接从缓存中获取;
而对于prototype,每一次从容器中请求实例,都会创建一个全新的实例。这个实例满足原型模式,即实例不同,类型和属性相同。
关键词: prototype