模式定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
- 由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
-
目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
- 根据对象克隆深度层次的不同,有浅度克隆与深度克隆。
下面我们使用Prototype模式来实现细胞(Cell)的自身复制过程。
Java语言提供了对象复制的机制,Prototype模式的Java实现一般也通过实现Cloneable接口来实现。
这里我们也通过实现Cloneable接口来说明Prototype模式。
Java语言提供了对象复制的机制,Prototype模式的Java实现一般也通过实现Cloneable接口来实现。
这里我们也通过实现Cloneable接口来说明Prototype模式。
public class Cell implements Cloneable {
//细胞壁
private String cellWall;
//细胞膜
private String cellMembrane;
//细胞组织
private String cellularTissue;
//细胞的自身复制
//这里重载了Object#clone()方法,为了方便外部调用,把返回值由Object修改为Cell,并把访问级别设置为public
public Cell clone() {
try {
//只需简单地调用super.clone();即可
return (Cell)super.clone();
} catch (CloneNotSupportedException e) {
throw (new InternalError(e.getMessage()));
}
}
}
//调用:
public class Client {
public static void main(String[] args) {
//准备原型细胞
Cell cell = new Cell();
cell.setCellWall("cell wall 1");
...
//克隆原型细胞
Cell clonedCell = cell.clone();
...
}
}