23种设计模式之原型模式代码实例
生活随笔
收集整理的這篇文章主要介紹了
23种设计模式之原型模式代码实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原型模式就是利用一個克隆”原型“來產(chǎn)生新對象的一種模式,
克隆又分淺克隆與深克隆,
淺克隆:將一個對象復(fù)制后,基本數(shù)據(jù)類型的變量都會重新創(chuàng)建,而引用類型,指向的還是原對象所指向的。
深克隆:將一個對象復(fù)制后,不論是基本數(shù)據(jù)類型還有引用類型,都是重新創(chuàng)建的。簡單來說,就是深復(fù)制進(jìn)行了完全徹底的復(fù)制,而淺復(fù)制不徹底。
具體代碼如下:
import java.io.Serializable;class SerializableObject implements Serializable {private static final long serialVersionUID = 1L; } import java.io.*;public class Prototype implements Cloneable,Serializable {private static final long serialVersionUID = 1L;private String string;private SerializableObject obj;/* 淺復(fù)制 */public Object clone() throws CloneNotSupportedException {Prototype proto = (Prototype) super.clone();return proto;}/* 深復(fù)制 */public Object deepClone() throws IOException, ClassNotFoundException {/* 寫入當(dāng)前對象的二進(jìn)制流 */ByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectOutputStream oos = new ObjectOutputStream(bos);oos.writeObject(this);/* 讀出二進(jìn)制流產(chǎn)生的新對象 */ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());ObjectInputStream ois = new ObjectInputStream(bis);return ois.readObject();}public String getString() {return string;}public void setString(String string) {this.string = string;}public SerializableObject getObj() {return obj;}public void setObj(SerializableObject obj) {this.obj = obj;} }?到此為止五種創(chuàng)建型模式:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。代碼實例完成。
轉(zhuǎn)載于:https://www.cnblogs.com/longhaolove/p/7847164.html
總結(jié)
以上是生活随笔為你收集整理的23种设计模式之原型模式代码实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LOAM_velodyne学习(二)
- 下一篇: 【黑苹果】联想ThinkPad X1 C