模式設計c#--創建型--Prototype
名稱 | Prototype |
結構 |
![]() |
意圖 | 用原型實例指定創建對象的種類,并且通過拷貝這些原型創建新的對象。 |
適用性 |
|
Code Example















































































C#對原型模式的支持
在C#里面,我們可以很容易的通過Clone()方法實現原型模式。任何類,只要想支持克隆,必須實現C#中的ICloneable接口。ICloneable接口中有一Clone方法,可以在類中復寫實現自定義的克隆方法。克隆的實現方法有兩種:淺拷貝(shallow copy)與深拷貝(deep copy)。
五、?淺拷貝與深拷貝
下面給出淺拷貝與深拷貝的兩個例子,例子使用了ICloneable接口。C#中的數組是引用型的變量,我們通過數組來進行演示:
淺拷貝:











































ShallowCopy對象實現了一個淺拷貝,因此當對sc1進行克隆時,其字段v并沒有克隆,這導致sc1與sc2的字段v都指向了同一個v,因此,當修改了sc1的v[0]后,sc2的v[0]也發生了變化。
深拷貝:




























































這次在克隆的時候,不但克隆對象本身,連里面的數組字段一并克隆。因此,最終打印出來的dc1與dc2不同。
posted on 2006-01-03 14:53 夢在天涯 閱讀(969) 評論(2) 編輯 收藏 引用 所屬分類: Design pattern