国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Prototype設計模式的實現

2024-07-21 02:17:11
字體:
來源:轉載
供稿:網友
prototype設計模式的實現

implementing the prototype design pattern



下載本文代碼

當我建立一個類的實例很復雜時,我們可以使用prototype模式。與其建立很多類的實例,還不如進行適當的修改后,使用最初的實例的副本。使用prototype模式,可以通過克隆一個原型,減少子類的數量。prototype模式可以減少類的實例的數量。

在這個模式中,通過克隆來創建對象。我們有時創建很多的子類,除了通過很多的子類來創建不同的對象,我們還可以只需要唯一的一個子類,這個子類保持對每個對象基類的引用,并通過這個子類創建對象。通過向子類的構造函數傳遞參數并克隆對象。每個對象都實現clone方法,所以可以被克隆。我們可以使用prototype模式,通過克隆原型來減少子類的數量。

克隆可以通過實現icloneable接口來實現。icloneable接口中唯一的方法是clone,并返回一個新的類的實例。

icloneable.clone method signature
[visualbasic] function clone() as object
[c#] object clone();




我們必須了解clone()方法只是一種淺表復制(shallow copy),而不是深層復制(deep copy)。所以它只是返回一個引用,而不象深層復制(deep copy)那樣創建一個復制的實例。我們可以通過使用iserializable接口來實現深層復制(deep copy)。

另一個缺點就是原型的每個子類必須實現clone()方法,有時候,增加clone方法是很困難的。

在這個例子中,我建立了empdata類,并且實現了icloneable接口和iserializable接口。icloneable接口需要實現clone方法,使得類可以被復制。iserializable接口為了實現對empdata類的深層復制(deep copy)。使用的方法為:將empdata對象序列化為一個文件,也可以將這個文件反序列化為一個empdata對象。

empdata類包含兩個方法:getempdata和changeempdata。這兩個方法被用來以一個字符串(string)的形式獲取empdata對象、更改empdata類。每個方法都可以被調用,來檢驗淺表復制(shallow copy)和深層復制(deep copy)的不同。淺表復制(shallow copy)時,如果empdata類改變時,這個變化也會同時出現在empdata的克隆對象中;而在深層復制(deep copy),如果empdata對象發生改變時,這個變化不會出現在empdata的克隆對象中。

empdata類的構造函數讀取xml文件并創建emp對象。


,歡迎訪問網頁設計愛好者web開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 噶尔县| 平昌县| 富民县| 和平县| 东乡县| 普格县| 石门县| 木里| 六盘水市| 千阳县| 云霄县| 革吉县| 当雄县| 台中县| 伊通| 泾川县| 谢通门县| 黄梅县| 胶南市| 元氏县| 镇远县| 鹤山市| 泗洪县| 夏河县| 东山县| 故城县| 南木林县| 怀宁县| 壤塘县| 车险| 府谷县| 阜康市| 东海县| 大渡口区| 玉龙| 布尔津县| 三原县| 淳安县| 嵩明县| 奎屯市| 万荣县|