23种设计模式之原型模式代码实例

原型模式就是利用一个克隆”原型“来产生新对象的一种模式,

克隆又分浅克隆与深克隆,

浅克隆:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。

深克隆:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。

具体代码如下:

import java.io.Serializable;

class SerializableObject implements Serializable {
    private static final long serialVersionUID = 1L;
}
import java.io.*;

public class Prototype implements Cloneable,Serializable {
    private static final long serialVersionUID = 1L;
    private String string;

    private SerializableObject obj;

    /* 浅复制 */
    public Object clone() throws CloneNotSupportedException {
        Prototype proto = (Prototype) super.clone();
        return proto;
    }

    /* 深复制 */
    public Object deepClone() throws IOException, ClassNotFoundException {

        /* 写入当前对象的二进制流 */
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(this);

        /* 读出二进制流产生的新对象 */
        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
        ObjectInputStream ois = new ObjectInputStream(bis);
        return ois.readObject();
    }

    public String getString() {
        return string;
    }

    public void setString(String string) {
        this.string = string;
    }

    public SerializableObject getObj() {
        return obj;
    }

    public void setObj(SerializableObject obj) {
        this.obj = obj;
    }
}

 到此为止五种创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。代码实例完成。

posted @ 2017-11-16 23:32  M理论  阅读(666)  评论(0编辑  收藏  举报