麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

原型設計模式

2019-11-14 12:33:55
字體:
來源:轉載
供稿:網友

前言

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

(如有異同請指出)

內容

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

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

淺復制與深復制

Object類的clone方法只會拷貝對象中的基本的數據類型,對于數組、容器對象、引用對象等都不會拷貝,這就是淺拷貝。 淺復制其實就是傳引用,當copy的時候我們copy的是地址中的內容,當地址中的內容改變,我們隨之也改變

實現深拷貝:必須將原型模式中的數組、容器對象、引用對象等另行拷貝 深復制其實就是傳引用,當copy的時候我們copy的是值,也就是說當地址中的值改變的時候不會影響到我們原來的值。 在代碼中體現淺復制與深復制的區別,通過接口我們可以看出區別 如圖 這里寫圖片描述

代碼

深復制代理類

//簡歷類 class Resume : ICloneable { //定義姓名,性別,年齡,工作經歷里面的work,引用工作經歷對象 PRivate string name; private string sex; private string age; private WorkExperience work; //只對工作經歷進行copy,在簡歷類實例化時間時實例化"工作經歷" public Resume(string name) { this.name = name; work = new WorkExperience(); } //提供Clone方法調用的私有構造函數,以便克隆工作經歷的數據 private Resume(WorkExperience work) { this.work = (WorkExperience)work.Clone(); } . . . . //調用私有的構造方法,讓工作經歷克隆完成,然后 public object Clone() { Resume obj = new Resume(this.work ); obj.name = this.name; obj.sex = this.sex; obj.age = this.age; return obj ; } } //工作經歷類實現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; } } //工作盡力類實現克隆方法 public object Clone() { return (object)this.MemberwiseClone(); } }

淺復制代碼

//簡歷類 class Resume:ICloneable { //定義姓名,性別,年齡,工作經歷里面的work,引用工作經歷對象 private string name; private string sex; private string age; private WorkExperience work; //只對工作經歷進行copy,在簡歷類實例化時間時實例化"工作經歷" public Resume(string name) { this.name = name; work = new WorkExperience(); } . . . public object Clone() { return (object)this.MemberwiseClone(); } } //工作經歷類 class WorkExperience { //定義工作時間字段 private string workDate; . . . .....
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99最新网址 | 成人小视频免费在线观看 | 在线a亚洲视频播放在线观看 | 久久综合精品视频 | 精品成人av一区二区三区 | 成人精品一区二区三区中文字幕 | 日韩av片网站| 免费看搡女人无遮挡的视频 | 国产视频在线免费观看 | 九九热免费视频在线观看 | 久久久av亚洲男天堂 | 成人黄色小视频网站 | 成人免费视频 | 国产乱轮视频 | 91美女啪啪 | 免费中文视频 | 精品亚洲夜色av98在线观看 | 色婷婷a v| 爽成人777777婷婷 | 国产日产精品久久久久快鸭 | 日韩在线毛片 | a免费视频 | 成人一级免费视频 | 国产精品久久久久久久久久大牛 | 成人午夜淫片a | 91久久国产综合久久91精品网站 | 蜜桃av鲁一鲁一鲁一鲁 | 中国av中文字幕 | 国产视频在线免费观看 | 国产成人av免费 | 性 毛片| 久久久久一区二区三区四区五区 | 黄色三级三级三级 | 亚洲国产精品一 | 国产亚洲欧美日韩高清 | 欧美三级欧美成人高清www | 一级成人免费 | 毛片免费看电影 | 日韩色视频在线观看 | 九色国产 | 97超级碰碰人国产在线观看 |