日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

建造者模式与原型模式/builder模式与prototype模式/创建型模式

發布時間:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 建造者模式与原型模式/builder模式与prototype模式/创建型模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建造者模式

定義

用于簡化復雜對象的創建

JDK中的建造者模式

java.lang.StringBuilder中的append()方法,每次調用后返回修改后的對象本身。

public StringBuilder append(String str) {super.append(str);return this;} //父類AbstractStringBuilder public AbstractStringBuilder append(String str) {if (str == null)return appendNull();int len = str.length();ensureCapacityInternal(count + len);str.getChars(0, len, value, count);count += len;return this;}

建造者模式和工廠模式的區別

建造者模式將很多功能集成到一個類里,這個類可以創造出比較復雜的東西。
所以與工程模式的區別就是:工廠模式關注的是創建單個產品,而建造者模式則關注創建符合對象,多個部分。
因此,是選擇工廠模式還是建造者模式,依實際情況而定。


原型模式

定義

原型模式雖然是創建型的模式,但是與工程模式沒有關系,從名字即可看出,該模式的思想就是將一個對象作為原型,
對其進行復制、克隆,產生一個和原對象類似的新對象。本小結會通過對象的復制,進行講解。
在Java中,復制對象是通過clone()實現的,先創建一個原型類:

class Prototpye1 implements Cloneable{public Object clone() throws CloneNotSupportedException{Prototpye proto=(Prototpye)super.clone();return proto;}//淺復制//因為此處的重點是super.clone()這句話,super.clone()調用的是Object的clone()方法,而在Object類中,clone()是native的 }

深復制和淺復制

淺復制:將一個對象復制后,基本數據類型的變量都會重新創建,而引用類型,指向的還是原對象所指向的。
深復制:將一個對象復制后,不論是基本數據類型還有引用類型,都是重新創建的。簡單來說,就是深復制進行了完全徹底的復制,而淺復制不徹底。`

class SerializableObject implements Serializable{private static final long serialVersionUID=1l; {} } public class Prototpye implements Cloneable,Serializable{private static final long serialVersionUID=1L;private String string;private SerializableObject obj;//淺復制.利用Object的clone()方法public Object clone()throws CloneNotSupportedException {Prototpye proto=(Prototpye)super.clone();return proto; }//要實現深復制,需要采用流的形式讀入當前對象的二進制輸入,再寫出二進制數據對應的對象。public Object deepClone()throws IOException ,ClassNotFoundException{ByteArrayOutputStream bos=new ByteArrayOutputStream();ObjectOutputStream oos=new ObjectOutputStream(bos);oos.writeObject(this);ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray());ObjectInputStream ois=new ObjectInputStream(bis);return ois.readObject();}public String getString() {return string;}public void setString(String str) {this.string=str;}public SerializableObject getObj() {return obj;} }

轉載于:https://www.cnblogs.com/lknny/p/4853581.html

總結

以上是生活随笔為你收集整理的建造者模式与原型模式/builder模式与prototype模式/创建型模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。