07 原型模式 Prototype

2021-06-22 19:40:13 字數 1206 閱讀 6902

prototype模式:

prototype模式用於指定建立物件的種類,並且通過拷貝這些原型建立新的物件。也就是說從乙個物件再建立另外乙個可以定製的物件,而且不需要知道任何建立的細節。

它提供了乙個通過已存在物件進行新物件建立的介面(clone),clone()實現和具體的實現語言相關,在c++中我們將通過拷貝建構函式實現之。

一般在初始化的資訊部發生變化的情況下,轉殖是最好的辦法,它隱藏了物件建立的細節,又能提高效能。不用重新初始化物件,而是動態的獲得物件執行時的狀態。

prototype模式的結構和實現都很簡單,其關鍵就是(c++中)拷貝建構函式的實現方式。

prototype模式典型的結構圖為:

以《大話設計模式》中複製簡歷為例項,下面是prototype模式的實現**:

#ifndef _prototype_h_

#define _prototype_h_

#include using namespace std;

// 簡歷

class resume

;// 大鳥的簡歷

class bigbirdresume:public resume

;#endif //~_prototype_h_

#include "prototype.h"

#include using namespace std;

resume::resume()

resume::~resume()

resume* resume::clone() const

bigbirdresume::bigbirdresume(string strname)

prototype模式通過複製原型(prototype)而獲得新物件建立的功能,這裡prototype本身就是「物件工廠」(因為能夠生產物件),實際上prototype模式和builder模式、abstractfactory模式都是通過乙個類(物件例項)來專門負責物件的建立工作(工廠物件),它們之間的區別是:

builder模式重在複雜物件的一步步建立(並不直接返回物件)。

abstractfactory模式重在產生多個相互依賴類的物件。

prototype模式重在從自身複製自己建立新類。

原型模式(ProtoType)

1.目的 當需要從乙個物件copy出另外乙個物件時,可以使用原型模式,本質上是呼叫的copy建構函式 與copy建構函式的區別,可能就是不需要顯示的生成物件,而是通過函式呼叫 2.prototype.h ifndef prototype h define prototype h include in...

Prototype 原型模式

prototype 原型模式 所謂原型模式,就是可以根據乙個原型,快速建立出其拷貝。如 int a 1 int b new int a a cout a endl cout b endl 輸出結果 2 1 上面就使用了原型模式。根據原型a,快速建立出了a的拷貝b。同時,b儲存了a當時的狀態。當a之後...

原型模式 Prototype

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式是一種建立型設計模式,它允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是通過將乙個原型物件傳給那個要發動建立的物件,這個要發動的物件通過請求原型物件拷貝它們自己來實施建立。現實很殘酷,都第9章了...