設計模式學習 原型模式 深複製與淺複製

2021-07-28 04:32:40 字數 1137 閱讀 6752

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

原型模式就是從乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。

其實,原型模式就是在原有的類中增加乙個轉殖函式,轉殖乙個和自身一樣的物件。這其中就涉及到了深複製和淺複製,淺複製:被複製的物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用都仍然指向原來的物件。深複製:把引用的物件的變數指向複製過的新物件,而不是原有的被引用的物件。

在看這深複製與淺複製的時候,書上是以c#為例,.net提供了乙個iconeable介面,直接可以呼叫clone函式,於是在網上找了c++實現的方法,但是書上出現了淺複製的情況,我因為是在堆上重新分配了乙個物件,然後*(該位址)賦於*(this),所以我並沒有出現淺複製的情況,為此還找了一會c++淺複製的實現方法,最後發現,只要不分配記憶體的話就是淺複製了。

#include using namespace std;

class workexperience //工作經歷類

string gettimearea() //獲取工作時間

string getcompany() //獲取工作地點

};class resume //簡歷

; resume(string name):m_name(name){}; //建構函式 傳入名字

void setpersonalinfo(string ***, string age) //設定性別和年齡

void setworkexperience(string timearea, string company) //設定工作經歷

void display() //列印簡歷

深複製結果:

淺複製結果:

設計模式 原型模式介紹 原型模式的深拷貝問題

轉殖羊問題 有乙個羊,是乙個類,有對應的屬性,要求建立完全一樣的10隻羊出來。那麼實現起來很簡單,我們先寫出羊的類 public class sheep然後,建立10只一樣的羊,就在客戶端寫乙個 建立 原始羊 sheep sheep new sheep tom 1,白色 轉殖羊 sheep shee...

學習設計模式 原型模式

說明 通過原型模式可以自動複製乙個例項化物件a給新的物件例項化物件b,這樣可以省去很多例項化 重複 的工作,便於維護。轉殖分為淺轉殖和深轉殖,淺轉殖只轉殖基礎型別資訊,對於類似物件這樣的複雜型別資訊,只轉殖這個物件的引用 深轉殖是基礎型別和複雜型別都轉殖其值,而不僅僅是轉殖引用 需求 複製簡歷,需要...

設計模式 原型模式深度理解淺拷貝深拷貝原理

一,棧 二,堆 先看看什麼是棧,什麼是堆,至於為什麼要這裡開頭就講棧和堆的解釋,原因後在後面有解釋,請往下看,直接上例項 淺拷貝例項 淺拷貝 public class weekreport implements cloneable serializable public void setemp st...