《大話設計模式 原型模式》筆記

2021-09-01 06:18:36 字數 1727 閱讀 1363

1、原型模式(prototype),用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。

2、原型模式結構圖

3、簡單**實現

3.1、繼承cloneable介面

public class concrereprototype implements cloneable 

public string getaddress()

public void setaddress(string address)

public string getname()

@override

protected object clone() throws clonenotsupportedexception

@override

public string tostring()

}

3.2、呼叫clone方法生成新的物件

public class client
3.3、一般初始化的資訊不發生變化的情況下,轉殖是最好的辦法,隱藏了物件建立的細節,又對效能大大的提高了。

4、深複製與淺複製

1、如果欄位是值型別的,則對字段逐位複製,如果是引用型別,複製引用不複製物件。string型別是特殊的引用型別。

2、修改上面的例子,增加工作經歷類

原型類:

public class concrereprototype implements cloneable 

public string getaddress()

public void setaddress(string address)

public string getname()

//設定工作物件

public void setworkex(string worktime,string workadress)

@override

protected object clone() throws clonenotsupportedexception

@override

public string tostring()

}

工作經歷類:

public class workexperence 

public void setworktime(string worktime)

public string getworkadress()

public void setworkadress(string workadress)

@override

public string tostring()

}

客戶端:

3、這就是淺複製,被複製物件的所有變數都含與原來物件相同的值,而所有其他物件的引用都仍然指向原來的物件。

4、深複製就是把引用物件的變數指向複製過的新物件,而不是原有的被引用物件。

5、解決辦法:在主類中的clone方法中轉殖工作經歷物件;或者序列化。

大話設計模式 原型模式

學無止境,精益求精 十年河東,十年河西,莫欺少年窮 學歷代表你的過去,能力代表你的現在,學習代表你的將來 上篇部落格介紹了c 深淺複製,其實原型模式講的主要就是物件的深淺複製 參考 c 深淺複製 memberwiseclone ok,言歸正傳 原型模式的概念 用原型例項指定建立物件的種類,並且通過拷...

《大話設計模式》 原型模式

如果物件的建立成本比較大,而同乙個類的不同物件之間差別不大 大部分欄位都相同 在這種情況下,我們可以利用對已有物件 原型 進行複製 或者叫拷貝 轉殖 的方式,來建立新物件,以達到節省建立時間的目的。這種基於原型來建立物件的方式就叫作原型設計模式,簡稱原型模式。核心 拷貝 轉殖 建立物件包含的申請記憶...

大話設計模式 原型模式 9

using system using system.collections.generic using system.linq using system.text namespace prototypefactory public prototype string id public abstrac...