{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計模式} {C#基礎(chǔ)}
C#對原型模式的支持
在C#里面,我們可以很容易的通過Clone()方法實(shí)現(xiàn)原型模式。任何類,只要想支持克隆,必須實(shí)現(xiàn)C#中的ICloneable接口。ICloneable接口中有一Clone方法,可以在類中復(fù)寫實(shí)現(xiàn)自定義的克隆方法??寺〉膶?shí)現(xiàn)方法有兩種:淺拷貝(shallow copy)與深拷貝(deep copy)。五、?淺拷貝與深拷貝
下面給出淺拷貝與深拷貝的兩個例子,例子使用了ICloneable接口。C#中的數(shù)組是引用型的變量,我們通過數(shù)組來進(jìn)行演示:
淺拷貝:
ShallowCopy對象實(shí)現(xiàn)了一個淺拷貝,因此當(dāng)對sc1進(jìn)行克隆時,其字段v并沒有克隆,這導(dǎo)致sc1與sc2的字段v都指向了同一個v,因此,當(dāng)修改了sc1的v[0]后,sc2的v[0]也發(fā)生了變化。
深拷貝:
這次在克隆的時候,不但克隆對象本身,連里面的數(shù)組字段一并克隆。因此,最終打印出來的dc1與dc2不同。
posted on 2006-01-03 14:53 夢在天涯 閱讀(974) 評論(2) 編輯 收藏 引用 所屬分類: Design pattern
Prototype模式的優(yōu)點(diǎn)與缺點(diǎn) Prototype模式的優(yōu)點(diǎn)包括 1、Prototype模式允許動態(tài)增加或減少產(chǎn)品類。由于創(chuàng)建產(chǎn)品類實(shí)例的方法是產(chǎn)批類內(nèi)部具有的,因此增加新產(chǎn)品對整個結(jié)構(gòu)沒有影響。 2、Prototype模式提供了簡化的創(chuàng)建結(jié)構(gòu)。工廠方法模式常常需要有一個與產(chǎn)品類等級結(jié)構(gòu)相同的等級結(jié)構(gòu),而Prototype模式就不需要這樣。 3、Portotype模式具有給一個應(yīng)用軟件動態(tài)加載新功能的能力。由于Prototype的獨(dú)立性較高,可以很容易動態(tài)加載新功能而不影響老系統(tǒng)。 4、產(chǎn)品類不需要非得有任何事先確定的等級結(jié)構(gòu),因?yàn)镻rototype模式適用于任何的等級結(jié)構(gòu)。 Prototype模式的缺點(diǎn): Prototype模式的最主要缺點(diǎn)就是每一個類必須配備一個克隆方法。而且這個克隆方法需要對類的功能進(jìn)行通盤考慮,這對全新的類來說不是很難,但對已有的類進(jìn)行改造時,不一定是件容易的事 回復(fù) 更多評論
原型模式的用意是:通過給出一個原型對象來指明所要創(chuàng)建的對象類型,然后用復(fù)制這個原型對象的辦法創(chuàng)建出更多的同類型對象。 回復(fù) 更多評論