大話設計模式c 實現 原型模式

2021-07-14 13:29:25 字數 1328 閱讀 7791

1、概念

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

2、說明

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

(2)一般在初始化的資訊不發生變化的情況下,轉殖是最好的辦法。這既隱藏了物件建立的細節,有對效能是大大的提高。因為如果不用clone,每次new,都需要執行一次建構函式,如果建構函式的執行時間很長,那麼多次的執行這個初始化操作就實在是太低效了。

(3)淺複製和深複製:

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

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

clone的時候使用深複製。

// designpattern9_prototype.cpp : 定義控制台應用程式的入口點。

////原型模式

#include "stdafx.h"

#include

#include

//工作經驗類:workexperience類

class workexperience

~workexperience(){}

//供轉殖呼叫的建構函式

workexperience(workexperience* work)

std::string getworkdate()

void setworkdate(std::string workdate)

std::string getcompany()

void setcompany(std::string company)

//轉殖

workexperience*  clone()

};//原型類,宣告乙個轉殖自身的介面。

class prototype

;//具體原型類,即concreteprototype類,本例中為簡歷resume類,實現乙個轉殖自身的操作。

class resume :public prototype

~resume()

//供轉殖呼叫的建構函式

resume(workexperience* work)

void setpersonalinfo(std::string ***, std::string age)

void setworkexperience(std::string workdate, std::string company)

void display()

//轉殖

resume* clone()

};void main()

大話設計模式 原型模式

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

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

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

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

1 原型模式 prototype 用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。2 原型模式結構圖 3 簡單 實現 3.1 繼承cloneable介面 public class concrereprototype implements cloneable public string ...