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

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

C#設(shè)計(jì)模式之原型(ProtoType)

2024-07-21 02:18:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
1. 為什么要用原型?用原型的好處

比如我們有一個(gè)工具欄按鈕,新建按鈕,它是toolbarbutton的實(shí)例,它有長(zhǎng)度、寬度屬性等,而且屬性都賦了值。

現(xiàn)在我們要再添加一個(gè)保存按鈕,它也是toolbarbutton的實(shí)例,它也有長(zhǎng)度、寬度屬性等,不過(guò)它還沒(méi)賦值,它的值和新建按鈕的值一樣。

如果我們不用原型設(shè)計(jì)模式的話,可能重新賦一遍值。如果我們用原型設(shè)計(jì)模式的話,我們可以把新建按鈕作為保存按鈕的原型。那樣的話就不需要再給保存按鈕賦值,它的默認(rèn)的長(zhǎng)度、寬度就和新建按鈕一樣了。





2. 在c#中怎樣用原型?

因?yàn)轭?lèi)的實(shí)例是引用類(lèi)型,要想用原有的類(lèi)中的實(shí)例的數(shù)據(jù)的話,只能用clone方法。

clone方法分為深clone和淺clone

在c#中提供了淺clone的方法,即為memberwiseclone()





c#淺clone的例子:

using system;







namespace designpattern



{



public class toolbarbutton : icloneable //實(shí)現(xiàn)clone接口



{







private int _width;



private int _height;







public toolbarbutton()



{



}







public int width



{



get



{



return _width;



}



set



{



_width=value;



}



}







public int height



{



get



{



return _height;



}



set



{



_height=value;



}



}











public object clone()



{



return this.memberwiseclone(); //返回淺clone方法¨



}



}







public class test



{



public void testmethod()



{



toolbarbutton mtb_newbutton=new toolbarbutton();



mtb_newbutton.width=60;



mtb_newbutton.height=30;







toolbarbutton mtb_savebutton=new toolbarbutton();



mtb_savebutton=(toolbarbutton)mtb_newbutton.clone();



//這時(shí)mtb_savebutton就有width和height的值了



}



}



}





發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吉林省| 运城市| 应城市| 积石山| 瑞安市| 称多县| 镇坪县| 英山县| 佛坪县| 台北市| 如皋市| 巴东县| 湖北省| 淮阳县| 瑞昌市| 榆树市| 壤塘县| 淮阳县| 贵港市| 广元市| 宿州市| 瑞丽市| 康平县| 永兴县| 安龙县| 红桥区| 永寿县| 富川| 上饶市| 龙岩市| 南平市| 邓州市| 松滋市| 黑山县| 手机| 临沭县| 贡嘎县| 汽车| 宿迁市| 全南县| 桐庐县|