java設計模式-原型(prototype)
阿新 • • 發佈:2018-05-18
需要 nal ava === exc AR 多資源 創建對象 ()
有時候創建對象是需要耗費很多資源,但是每個對象之間又有大量的重復。我們可以選擇在創建好一個對象後,以之作為模板克隆出其他對象,稍作修改,即可用於其他地方。
需要實現Cloneable接口,重寫clone()方法。其實就是調用的Object類的clone()方法。
克隆對象只是復制了原對象的數據,每個對象還是獨立的,他們的內存地址不同。
/** * Created by wangbin10 on 2018/5/18. */ public class Prototype2 implements Cloneable,Serializable { private static final longserialVersionUID = 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)