C 設計模式實現 原型模式

2021-07-02 06:42:12 字數 1954 閱讀 4640

一、概述:

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。其中有乙個詞很重要,那就是拷貝。可以說,拷貝是原型模式的精髓所在。舉個現實中的例子來介紹原型模式。找工作的時候,我們需要準備簡歷。假設沒有列印裝置,因此需手寫簡歷,這些簡歷的內容都是一樣的。這樣有個缺陷,如果要修改簡歷中的某項,那麼所有已寫好的簡歷都要修改,工作量很大。隨著科技的進步,出現了列印裝置。我們只需手寫乙份,然後利用列印裝置影印多份即可。如果要修改簡歷中的某項,那麼修改原始的版本就可以了,然後再影印。原始的那份手寫稿相當於是乙個原型,有了它,就可以通過影印(拷貝)創造出更多的新簡歷。這就是原型模式的基本思想。

二、uml圖:

三、優缺點:

優點:複製自身。客戶不知道需要物件的實際型別,只需知道它的抽象基類即可。(即有繼承樹的情況)

缺點:必須先有乙個物件例項(即原型)才能clone。

四、**實現:

[cpp]view plain

copy

print?

#include

//介面

class cprototype 

virtual ~cprototype(){} 

virtual cprototype* clone() = 0; 

}; 

//實現

class cconcreteprototype : public cprototype 

virtual ~cconcreteprototype(){} 

//拷貝建構函式

cconcreteprototype(const cconcreteprototype& rhs) 

//複製自身

virtual cprototype* clone() 

private: 

int m_counter; 

}; 

int main(int argc, char **argv)   

#include //介面

class cprototype

virtual ~cprototype(){}

virtual cprototype* clone() = 0;

};//實現

class cconcreteprototype : public cprototype

virtual ~cconcreteprototype(){}

//拷貝建構函式

cconcreteprototype(const cconcreteprototype& rhs)

//複製自身

virtual cprototype* clone()

private:

int m_counter;

};int main(int argc, char **argv)

五、綜述:prototype模式同工廠模式,同樣對客戶隱藏了物件的建立工作.但是,與通過對乙個類進行例項化來構造新物件不同的是,原型模式是通過拷貝乙個現有物件生成新物件的,達到了"隔離類物件的使用者和具體型別(易變類)之間的耦合關係"的目的.

原型模式可以很方便的快速構建相同型別的物件.其構造過程有點類似細胞**.通過原型模式的轉殖介面轉殖物件,我們可以完全不關心待轉殖物件本身的型別,只需要呼叫介面就可以產生乙個新的同類物件.

C 設計模式實現 原型模式

一 概述 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。其中有乙個詞很重要,那就是拷貝。可以說,拷貝是原型模式的精髓所在。舉個現實中的例子來介紹原型模式。找工作的時候,我們需要準備簡歷。假設沒有列印裝置,因此需手寫簡歷,這些簡歷的內容都是一樣的。這樣有個缺陷,如果要修改簡歷中的某項...

設計模式 原型模式C 實現

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件 class prototype protected prototype public virtual prototype clone const 0 vitual prototype 0 class prototypeclass pub...

設計模式C 實現六 原型模式

原型模式 prototype 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式其實就是從乙個物件再建立另乙個可定製的物件,而且不需知道建立的具體細節。ifndef prototype h define prototype h include includeusing name...