原型模式(淺克隆和深克隆)筆記

什麼是原型模式

原型模式也稱爲克隆模式,可以在不知道對象創建過程的情況下複製出一個新的對象。

克隆方式分爲淺克隆和深克隆。

怎麼實現原型模式

Object類中有一個clone()方法,所以要使用原型模式非常簡單,只要實現Cloneable的接口就可以了。 
Java語言提供的Cloneable接口只起一個作用,就是在運行時期通知Java虛擬機可以安全地在這個類上使用clone()方法。通過調用這個clone()方法可以得到一個對象的複製。由於Object類本身並不實現Cloneable接口,因此如果所考慮的類沒有實現Cloneable接口時,調用clone()方法會拋出CloneNotSupportedException異常。

淺克隆

克只負責克隆按值傳遞的數據(比如基本數據類型、String類型),而不復制它所引用的對象,換言之,所有的對其他對象的引用都仍然指向原來的對象。

深克隆

複製對象的所有屬性,複製出來的新對象和原對象指向兩個不同的實例,既經過深克隆的對象,會在內存中生成一個新的實例。深克隆的實現方式:通過序列化寫入流中,再反序列化生成一個新的對象。

優缺點

優點:

1.可以不需要知道對象的創建過程,直接快速創建出新對象。這點對於初始化過程複雜的對象,十分有效。

缺點:對象的複製有時相當的複雜。特別是當一個類引用不支持序列化的間接對象,或者引用含有循環結構的時候。

代碼參考:https://github.com/biggirlo/study/tree/dev/src/main/java/com/biggirlo/design/prototype

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章