如果你想克隆一个你自己,那么原型模式了解一下。与单例模式相反,原型模式就是要多少个对象就有多少个对象。
一、什么是原型模式?
原型模式是一种创建型设计模式,原型(Prototype)模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
感觉有点绕?简单来说,原型模式在Java中就是clone()方法的使用,"复制“一个对象生成另外一个对象。
它主要面对的问题是:“某些结构复杂的对象”的创建工作。可以利用原型模式简化对象的创建过程,同时也能够提高效率。
二、如何实现原型模式?
1.用UML类图描述原型模式
2.具体javademo代码
(1).浅拷贝的介绍:
1)对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。
2)对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。因为实际上两个对象的该成员变量都指向同一个实例。在这种情况下,在一个对象中修改该成员变量会影响到另一个对象的该成员变量值.
(2).深拷贝的介绍:
1) 复制对象的所有基本数据类型的成员变量值
2) 为所有引用数据类型的成员变量申请存储空间,并复制每个引用数据类型成员变量所引用的对象,直到该对象可达的所有对象。也就是说,对象进行深拷贝要对整个对象进行拷贝,而不仅仅是对象的地址。
三、实际应用的例子
spring源码中的prototype......