码迷,mamicode.com
首页 > 编程语言 > 详细

java设计模式-原型(prototype)

时间:2018-05-18 15:45:55      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:zha   throw   test   out   jin   ===   ted   很多   ati   

有时候创建对象是需要耗费很多资源,但是每个对象之间又有大量的重复。我们可以选择在创建好一个对象后,以之作为模板克隆出其他对象,稍作修改,即可用于其他地方。

 需要实现Cloneable接口,重写clone()方法。其实就是调用的Object类的clone()方法。

克隆对象只是复制了原对象的数据,每个对象还是独立的,他们的内存地址不同。

/**
 * Created by wangbin10 on 2018/5/18.
 */
public class Prototype2 implements Cloneable,Serializable {
    private static final long serialVersionUID = 2L;
    private String name;
    private Integer payAmount;
    private String msg;

    public Prototype2() {
    }

    public Prototype2(String name, Integer payAmount, String msg) {
        this.name = name;
        this.payAmount = payAmount;
        this.msg = msg;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getPayAmount() {
        return payAmount;
    }

    public void setPayAmount(Integer payAmount) {
        this.payAmount = payAmount;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

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

 

/**
 * Created by wangbin10 on 2018/5/18.
 */
public class PTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        Prototype2 p1=new Prototype2("zhangsan",23,"hello!welcome to beijing!");
        System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg());
        Prototype2 p2 = p1.clone();
        p2.setName("lisi");
        p2.setPayAmount(24);
        System.out.println(p2.getName()+p2.getPayAmount()+p2.getMsg());
        System.out.println("============================");
        System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg());

    }
}

 

java设计模式-原型(prototype)

标签:zha   throw   test   out   jin   ===   ted   很多   ati   

原文地址:https://www.cnblogs.com/wangbin2188/p/9056130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!