1、本质:克隆生成对象
2、定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
3、与new的区别:
new的对象实例只有默认值
克隆的对象拥有和被克隆对象完全相同的值
4、Java中本身提供的克隆方法:
1、被克隆类实现Cloneable接口
2、被克隆类中添加clone方法
1 public Object clone(){ 2 Object obj = null; 3 4 try{ 5 6 obj = super.clone(); 7 8 }catch(CloneNotSupportedException e){ 9 e.printStackTrace(); 10 } 11 12 return obj; 13 }
5、浅度克隆和深度克隆
浅度克隆:只负责克隆按值传递的数据 --基本数据类型,String
深度克隆:除了浅度克隆要克隆的值外,还克隆应用类型的数据 --需要递归克隆,即:属性对象也需要正确实现克隆方法
6、优点:
对客户端隐藏具体的实现类型
在运行时动态改变具体的实现类型
7、缺点:
每个原型的子类都必须实现clone的操作
原型模式(Prototype),布布扣,bubuko.com
原文:http://www.cnblogs.com/hdwons/p/dp_prototype.html