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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

原型設(shè)計模式

2019-11-14 11:38:50
字體:
供稿:網(wǎng)友

前言

這個模式我感覺對于我們大家來說真是的在熟悉不過了,不就是復(fù)制啊,在寫代碼的時候我有的時候就會ctrl+c,ctrl+v,復(fù)制的時候挺爽,出錯的時候別哭就行,嘻嘻

(如有異同請指出)

內(nèi)容

定義:用原型實例制定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象 解釋:我們通過原型模式可以快速的創(chuàng)建一個對象而不需要提供專門的new()操作就可以快速完成對象的創(chuàng)建,這無疑是一種非常有效的方式,快速的創(chuàng)建一個新的對象,原型模式其實就是從一個對象再創(chuàng)建另外一個可定制的對象,而且不需要知道任何創(chuàng)建的細(xì)節(jié)。 當(dāng)我們學(xué)習(xí)工廠模式和簡單工廠等一些模式的時候,我們需要在開頭的時候就需要new一個對象而原型設(shè)計模式突破了這種繁瑣,它不用一點一點的從頭開始進(jìn)行(初始化新對象),直接利用結(jié)果就好(動態(tài)的獲得對象運(yùn)行時的狀態(tài))

例如圖: 這里寫圖片描述 說簡單點其實原型設(shè)計模式就是copy出來一個原來對象,就像孫悟空拔下一嘬猴毛,輕輕一吹就會變出好多的孫悟空來。

淺復(fù)制與深復(fù)制

Object類的clone方法只會拷貝對象中的基本的數(shù)據(jù)類型,對于數(shù)組、容器對象、引用對象等都不會拷貝,這就是淺拷貝。 淺復(fù)制其實就是傳引用,當(dāng)copy的時候我們copy的是地址中的內(nèi)容,當(dāng)?shù)刂分械膬?nèi)容改變,我們隨之也改變

實現(xiàn)深拷貝:必須將原型模式中的數(shù)組、容器對象、引用對象等另行拷貝 深復(fù)制其實就是傳引用,當(dāng)copy的時候我們copy的是值,也就是說當(dāng)?shù)刂分械闹蹈淖兊臅r候不會影響到我們原來的值。 在代碼中體現(xiàn)淺復(fù)制與深復(fù)制的區(qū)別,通過接口我們可以看出區(qū)別 如圖 這里寫圖片描述

代碼

深復(fù)制代理類

//簡歷類 class Resume : ICloneable { //定義姓名,性別,年齡,工作經(jīng)歷里面的work,引用工作經(jīng)歷對象 PRivate string name; private string sex; private string age; private WorkExperience work; //只對工作經(jīng)歷進(jìn)行copy,在簡歷類實例化時間時實例化"工作經(jīng)歷" public Resume(string name) { this.name = name; work = new WorkExperience(); } //提供Clone方法調(diào)用的私有構(gòu)造函數(shù),以便克隆工作經(jīng)歷的數(shù)據(jù) private Resume(WorkExperience work) { this.work = (WorkExperience)work.Clone(); } . . . . //調(diào)用私有的構(gòu)造方法,讓工作經(jīng)歷克隆完成,然后 public object Clone() { Resume obj = new Resume(this.work ); obj.name = this.name; obj.sex = this.sex; obj.age = this.age; return obj ; } } //工作經(jīng)歷類實現(xiàn)ICloneable class WorkExperience:ICloneable { //定義工作時間字段 private string workDate; //屬性 public string WorkDate { get { return workDate; } set { workDate = value; } } //定義公司 private string company; //屬性 public string Company { get { return company; } set { company = value; } } //工作盡力類實現(xiàn)克隆方法 public object Clone() { return (object)this.MemberwiseClone(); } }

淺復(fù)制代碼

//簡歷類 class Resume:ICloneable { //定義姓名,性別,年齡,工作經(jīng)歷里面的work,引用工作經(jīng)歷對象 private string name; private string sex; private string age; private WorkExperience work; //只對工作經(jīng)歷進(jìn)行copy,在簡歷類實例化時間時實例化"工作經(jīng)歷" public Resume(string name) { this.name = name; work = new WorkExperience(); } . . . public object Clone() { return (object)this.MemberwiseClone(); } } //工作經(jīng)歷類 class WorkExperience { //定義工作時間字段 private string workDate; . . . .....
上一篇:zb的生日

下一篇:sql總結(jié)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 张北县| 纳雍县| 凤台县| 孝义市| 岢岚县| 丁青县| 玉田县| 平江县| 临漳县| 临猗县| 洪湖市| 贵定县| 桂阳县| 南召县| 富阳市| 阿拉善左旗| 呈贡县| 瑞金市| 聊城市| 台东县| 和平县| 屏边| 屯留县| 博罗县| 芒康县| 望谟县| 开阳县| 三亚市| 剑川县| 隆昌县| 邻水| 丰县| 寿宁县| 肥东县| 东宁县| 泾阳县| 耿马| 明水县| 新余市| 晋州市| 家居|