国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 山阳县| 马尔康县| 泰和县| 无极县| 武定县| 方山县| 白银市| 寿宁县| 依安县| 塘沽区| 长治县| 台南县| 烟台市| 景洪市| 沁水县| 阳泉市| 吐鲁番市| 九龙坡区| 米泉市| 巴楚县| 墨脱县| 河池市| 海淀区| 乐至县| 咸丰县| 锡林郭勒盟| 甘泉县| 辽阳县| 永福县| 收藏| 太仓市| 中牟县| 英吉沙县| 五家渠市| 略阳县| 德清县| 元朗区| 翼城县| 高邮市| 济阳县| 蓬溪县|