原型模式就是用一个对象来创建一个与该对象相同或相近的新的对象。
假如我们有一个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() 得到的是当前调用类的副本,而不是父类的副本。
分享到:
相关推荐
C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) 体验课程
C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) (Level 300)
prototype原型模式,通过拷贝构造函数,实现复制一个与现有对象一样的对象
C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均... 这是第6节:Prototype原型模式创建型模式.part1
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均... 这是第6节:Prototype原型模式创建型模式.part2
主要为大家详细介绍了Java设计模式之Prototype原型模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了设计模式中的Prototype原型模式及在C++中的使用,需要的朋友可以参考下
即原型模式,提供一个已经存在的对象进行新对象创建的接口,一般情况下都是使用Clone接口。 此模式非常简单,简单的说就是复制多个当前对象供使用。Prototype模式允许一个对象再创建另外一个可定制的对象,根本...
设计模式C++学习之原型模式(Prototype)
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
NULL 博文链接:https://hnzhoujunmei.iteye.com/blog/1032892
原型模式的示例代码和文档,学习原型模式的参考资料。
6、原型模式(Prototype Pattern) 用意:通过拷贝创建一个新的对象
设计模式之原型模式prototype有更多需要请联系我wyb_jany@126.com
一个原型设计模式的应用案例,C#语言编写,有助于设计模式的理解和学以致用。
NULL 博文链接:https://gary0416.iteye.com/blog/904124
C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) C#面向对象设计...