(1)根据一个对象的原型创建另外一个对象,并且完全copy原对象的所有属性,即克隆。
2. 关于clone()方法和Cloneable接口
(1)clone()方法是java.lang.Object的一个protected 方法。
(2)Cloneable是一个标识接口。
(3)java.lang.Object并没有实现Cloneable这个标识接口。
(4) 如果调用某类的clone()方法,而该类没有实现Cloneable这个标识接口,会抛出CloneNotSupportedException。
3. 代码架构(1)如果是接口
public interface Prototype extends Cloneable{
Prototype clone();
}
(2)如果是抽象类public abstract class AbstractPrototype implements Cloneable {
public Object clone() {
Object object = null;
try {
object = super.clone();
} catch (CloneNotSupportedException exception) {
System.err.println("AbstractPrototype is not Cloneable");
}
return object;
}
}
4. clone()方法的实现必须满足3个条件Object object = null;
try {
object = super.clone();
} catch (CloneNotSupportedException exception) {
System.err.println("AbstractPrototype is not Cloneable");
}
return object;
}
}
(1)x.clone() != x 。
(2)x.clone().getClass() == x.getClass() 。
(3)x.clone().equals(x) == true 。
注意,第3条涉及到equals()方法的实现,而equals()方法的实现又涉及到hashCode()方法的实现。
6. 典型应用场景
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏
3. 《Effective Java中文版》 潘爱民 译
没有评论:
发表评论