欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式==原型模式(ProtoType)

程序员文章站 2022-06-12 22:24:26
...
/*
 * 原型模式(ProtoType)
 *
 * 通过一个原型对象来创建一个新对象(克隆)。Java中要给出Clonable接口的实现,具体类要实现这个接口,并给出clone()方法的实现细节,这就是简单原型模式的应用。  浅拷贝:只拷贝简单属性的值和对象属性的地址  深拷贝:拷贝本对象引用的对象,有可能会出现循环引用的情况。可以用串行化解决深拷贝。写到流里再读出来,这时会是一个对象的深拷贝结果。
 *
 *
 */

package model;

import java.io.Serializable;

public class TestClonealbe {
    public static void main(String[] args) throws Exception {
        Father f = new Father();
        User u1 = new User("123456", f);
        User u2 = (User) u1.clone();
        System.out.println(u1 == u2);
        System.out.println(u1.f == u2.f);
    }
}

class User implements Cloneable, Serializable {
    
    private static final long serialVersionUID = 1L;
    String password;
    Father f;

    public User(String password, Father f) {
        this.password = password;
        this.f = f;
    }

    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

class Father implements Serializable {

    private static final long serialVersionUID = 1L;
}