设计模式-原型模式

模式定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

- 由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
- 目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
- 根据对象克隆深度层次的不同,有浅度克隆与深度克隆。

 

下面我们使用Prototype模式来实现细胞(Cell)的自身复制过程。
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();
        ...
    }
}
 
posted @ 2012-12-18 15:56  默默生长的蘑菇  阅读(108)  评论(0编辑  收藏  举报