設計模式(六)Prototype Pattern 原型模式
阿新 • • 發佈:2018-12-05
通過new產生一個物件非常繁瑣,可以使用原型模式
原型模式實現:
——Cloneable介面和clone方法
——Prototype模式實現起來最困難的地方是實現記憶體的複製和操作,Java中提供了clone方法省了大部分事情
案例:多利羊的克隆
package com.littlepage.PrototypePattern; public class Sheep implements Cloneable{ String name; int date; public Sheep(String name, int date) { super();this.name = name; this.date = date; } @Override protected Object clone() throws CloneNotSupportedException { Object obj=super.clone(); return obj; } }
1.繼承Cloneable介面
2.重寫clone方法
測試,不同只羊,相同屬性
淺克隆
package com.littlepage.PrototypePattern; public classTest { public static void main(String[] args) throws CloneNotSupportedException { Sheep s=new Sheep("molly",2019); Sheep ss=(Sheep)s.clone(); System.out.println(s); System.out.println(ss); } }
淺拷貝和深拷貝
淺拷貝,只拷貝一層,不會把物件中引用的物件進行拷貝
深拷貝,拷貝深層
初學java的時候應該學過,這裡不提太多
深克隆
package com.littlepage.PrototypePattern; import java.util.Date; public class Sheep implements Cloneable{ String name; Date date; public Sheep(String name, Date date) { super(); this.name = name; this.date = date; } @Override protected Object clone() throws CloneNotSupportedException { Object obj=super.clone(); Sheep s=(Sheep)obj; s.date=(Date)this.date.clone(); return obj; } }