Prototype(原型模式)

原型模式就是用一个对象来创建一个与该对象相同或相近的新的对象。
假如我们有一个Product类,
class Product
{
String name=null;
//set get方法
……
}

这个类有一个对象product1
如果我们创建一个跟product1一样的对象,那么传统上应该这样:Product product2=new Product();product2.setName(product1.getName);
但是如果采用原型模式的话我们只要在原型对象里添加一个clone()函数
class Product
{
String name=null;
//set get method
……
public Product clone()
{
Product product=new Product();
Product.setName(this.name);
Return product;
}
}

创建对象Product product2=product1.clone();
在java中,所有的对象都继承了Object,Object类中有一个clone()方法用来克隆对象
Class Product implements Cloneable
{
String name=null;
//set get method
……
public Product clone throws CloneNotSupportedException
{
return super.clone();
}
}

Object中的clone执行的时候使用了RTTI(run-time  type  identification)的机制,动态得找到目前正在调用clone方法的那个reference,根据它的大小申请内存空间,然后进行的复制,将该对象的内存空间完全复制到新的空间中去。
所以调用super.clone() 得到的是当前调用类的副本,而不是父类的副本。

猜你喜欢

转载自jeedroid.iteye.com/blog/1233745