C 設計模式 原型模式

2021-10-01 18:08:52 字數 1236 閱讀 5457

原型模式正是提供了自我複製的功能,就是說新物件的建立可以通過已有物件進行建立。《設計模式:可復用物件導向軟體的基礎》中是這樣說的:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。這這個定義中,最重要的乙個詞是「拷貝」,也就是口頭上的複製,而這個拷貝,也就是原型模式的精髓所在。

【注】深拷貝和淺拷貝的區別:

選擇原型模式最好遵循以下原則:

當我們的物件型別不是開始就能確定的,而這個型別是在執行期確定的話,那麼我們通過這個型別的物件轉殖出乙個新的物件比較容易一些;

有的時候,我們需要乙個物件在某個狀態下的副本,此時,我們使用原型模式是最好的選擇;例如:乙個物件,經過一段處理之後,其內部的狀態發生了變化;這個時候,我們需要乙個這個狀態的副本,如果直接new乙個新的物件的話,但是它的狀態是不對的,此時,可以使用原型模式,將原來的物件拷貝乙個出來,這個物件就和之前的物件是完全一致的了;

當我們處理一些比較簡單的物件時,並且物件之間的區別很小,可能就幾個屬性不同而已,那麼就可以使用原型模式來完成,省去了建立物件時的麻煩了;

有的時候,建立物件時,建構函式的引數很多,而自己又不完全的知道每個引數的意義,就可以使用原型模式來建立乙個新的物件,不必去理會建立的過程;

即是說,基本就是你需要從a的例項得到乙份與a內容相同,但是又互不干擾的例項的話,就需要使用原型模式!

1.使用拷貝模式比直接new乙個物件的開銷要小的多;

2.可以在程式執行時(物件屬性發生了變化),得到乙份內容相同的例項,但之間還不會相互干擾;

示例:

#include "stdafx.h"

#include #include using namespace std;

class product

void setprize(int prize)

void setsize(int size)

void setshape(char* shape)

void display()

product* clone()

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

結果:

原型模式及c++實現

設計模式之原型模式(c++)

C 設計模式 原型模式

定義 用原型 prototype 例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。結構 理解 1.prototype 是原型基類,提供clone 純虛方法,它根據不同的派生類來轉殖不同的物件。2.concreteprototype 是原型具體類。實現clone 方法,轉殖自己,返回轉殖後的...

c 設計模式(原型模式)

good 從乙個物件再建立另外乙個可定製的物件,而無需知道任何建立的細節。並能提高建立的效能。說白了就copy技術,把乙個物件完整的copy出乙份。例 include include include using namespace std class prototype 抽象基類 prototype...

C 設計模式 原型模式

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。建立型模式中乙個比較特殊的模式 原型模式,有個最大的特點是轉殖乙個現有的物件,這個轉殖的結果有2種,一種是淺度複製,另一種是深度複製。建立型模式一般是用來建立乙個新的物件,然後我們使用這個物件完成一些物件的操作,我們通過原型模式可以快速...