用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件
class prototype
protected:
prototype();
public:
virtual prototype* clone() const = 0;
vitual ~prototype() = 0;
class prototypeclass:public prototype
public:
prototypeclass();
prototypeclass(const prototypeclass & cp);
prototype* clone()const
注:原型模型在c++中的體現關鍵就在於拷貝建構函式的實現方式。
工廠模式,建造者模式,原型模式都是通過已有類物件來構造新物件,區別在於
工廠模式:側重批量生產多個相互依賴類的物件
建造者模式:側重複雜物件的分步驟建立
原型模式:通過複製自身來實現新物件構造
優點效能優良,避免了建構函式的約束。
①資源優化場景,類的初始化需要資源(資料,硬體)比較大
②效能和安全要求,通過new頻繁生產時會有資料準備和許可權問題
③乙個物件多個修改的場景,eg學生資訊**。
建構函式將不被執行
深淺拷貝問題,當類內部含有指標時,需要自己實現深拷貝。
C 設計模式實現 原型模式
一 概述 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。其中有乙個詞很重要,那就是拷貝。可以說,拷貝是原型模式的精髓所在。舉個現實中的例子來介紹原型模式。找工作的時候,我們需要準備簡歷。假設沒有列印裝置,因此需手寫簡歷,這些簡歷的內容都是一樣的。這樣有個缺陷,如果要修改簡歷中的某項...
C 設計模式實現 原型模式
一 概述 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。其中有乙個詞很重要,那就是拷貝。可以說,拷貝是原型模式的精髓所在。舉個現實中的例子來介紹原型模式。找工作的時候,我們需要準備簡歷。假設沒有列印裝置,因此需手寫簡歷,這些簡歷的內容都是一樣的。這樣有個缺陷,如果要修改簡歷中的某項...
設計模式C 實現六 原型模式
原型模式 prototype 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式其實就是從乙個物件再建立另乙個可定製的物件,而且不需知道建立的具體細節。ifndef prototype h define prototype h include includeusing name...