設計模式 Prototype模式

2021-08-03 17:04:58 字數 1172 閱讀 9859

prototype模式——簡單理解就是新物件的建立可以通過已有物件進行建立。

prototype模式提供了乙個通過已存在物件進行新物件建立的介面cloneclone實現和具體的實現語言相關,在c++中通過拷貝建構函式實現。

prototype模式通過複製原型(prototype)而獲得新物件的建立功能,能夠生產物件,讓我們想起了工廠模式。實際上prototype模式和builder模式、abstractfactory模式都是通過乙個類(物件例項)來專門負責物件的建立工作(工廠物件),它們之間的區別是:builder模式重在複雜物件的一步步建立(並不直接返回物件),abstractfactory模式重在產生多個互相依賴的物件,而prototype模式重在從自身複製自己建立新類。

**示例(c++)

ptototype模式的實質就是建立乙個單獨的介面clone,由這個介面實現複製已存在的物件。不通過介面的話也可以實現複製物件,這就要我們重寫拷貝建構函式。例如:

std:

:string s=

"124"

;std:

:string s1

(s);

在原型模式中,將拷貝建構函式封裝成乙個介面,實現複製物件的功能。**示例如下:

// prototypepattern.cpp

#include

"stdafx.h"

#include

using namespace std;

class prototype

virtual prototype*

clone()

const=0

;protected:

prototype()

};class concreteprototype:public prototype

concreteprototype

(const concreteprototype& obj)

~concreteprototype()

prototype*

clone()

const

private:};

intmain()

設計模式 Prototype

感覺這個模式比較之無聊,至少是自己尚未碰到過它的應用,可能對物件的拷貝進行了進一步的封裝,拷貝方式可做成深拷貝和淺拷貝 class prototype operation virtual clone class concreteprototype public prototype operattio...

設計模式 Prototype

一.概述 定義 用原型例項指定建立物件的種類,並且通過 拷貝 這些原型建立新的物件。換句話說,就是不用重新初始化物件,而是動態地獲得物件執行時的狀態。再說明白點,就是要乙個拷貝過建構函式類似功能的介面。結構圖如下 如下 cpp 原型類,有乙個clone介面 class prototype virtu...

設計模式 Prototype

原型也是一種建立型模式,考慮下面的場景 乙個類有1,2,3,4,5,6,7,8種狀態,在執行過程中經過了以下1 2 3 4的狀態轉換,且進入到狀態4時必須要經過1,2,3的狀態轉換。在進入狀態4後,可以向5,6,7,8狀態轉換。此時要對此物件做白盒測試,1 4是乙個固定的流程,很顯然,從乙個狀態已經...