java设计模式-原型(prototype)

有时候建立对象是须要耗费不少资源,可是每一个对象之间又有大量的重复。咱们能够选择在建立好一个对象后,以之做为模板克隆出其余对象,稍做修改,便可用于其余地方。this

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

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

/** * 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()); } }
相关文章
相关标签/搜索