作用:
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。
prototype模式提供了乙個通過已存在物件進行新物件建立的介面(clone), clone()實現和具體的語言相關,在c++中通過拷貝建構函式實現。
uml圖如下:
**如下:
prototype.h
1prototype.cpp#ifndef _prototype_h_
2#define _prototype_h_34
/*prototype模式提供了乙個通過已存在物件進行新物件建立的介面(clone)
5clone()實現和具體的語言相關,在c++中通過拷貝建構函式實現67
作用:8
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。910
*/11
12/*
prototype原型基類,定義clone介面函式
13*/
14class
prototype15;
2223
//派生自prototype,實現其介面函式
24class concreteprototype1:public
prototype25;
3233
//派生自prototype,實現其介面函式
34class concreteprototype2:public
prototype35;
4243
#endif
1 #include "main.cppprototype.h
"2 #include "
iostream"3
4using
namespace
std;56
////prototype
7prototype::prototype()811
12 prototype::~prototype()
1316
17//
concreteprototype1
18concreteprototype1::concreteprototype1()
1922
23 concreteprototype1::~concreteprototype1()
2427
28 concreteprototype1::concreteprototype1(const concreteprototype1&cp)
2932
33 prototype* concreteprototype1::clone() const
3437
38//
concreteprototype2
39concreteprototype2::concreteprototype2()
4043
44 concreteprototype2::~concreteprototype2()
4548
49 concreteprototype2::concreteprototype2(const concreteprototype2&cp)
5053
54 prototype* concreteprototype2::clone() const
55
1 #include "prototype模式和builder模式、abstractfactory模式都是通過乙個類(物件例項)來專門負責物件的建立工作(工廠物件),它們之間的區別是:builder模式重在複雜物件的一步步建立(並不直接返回物件),abstractfactory模式重在產生多個相互依賴類的物件,而prototype模式重在從自身複製自己建立新類。prototype.h
"2 #include 3
using
namespace
std;45
intmain()
6
C 設計模式之Prototype
一 功能 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。二 結構圖 三 優缺點 優點 複製自身。客戶不知道需要物件的實際型別,只需知道它的抽象基類即可。即有繼承樹的情況 缺點 必須先有乙個物件例項 即原型 才能clone。四 示例 namespace designpattern p...
C 設計模式之Prototype
c 設計模式之prototype 2002 08 01 com集中營 一 功能 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。二 結構圖 三 優缺點 優點 複製自身。客戶不知道需要物件的實際型別,只需知道它的抽象基類即可。即有繼承樹的情況 缺點 必須先有乙個物件例項 即原型 才能c...
設計模式 Prototype
感覺這個模式比較之無聊,至少是自己尚未碰到過它的應用,可能對物件的拷貝進行了進一步的封裝,拷貝方式可做成深拷貝和淺拷貝 class prototype operation virtual clone class concreteprototype public prototype operattio...