設計模式 Prototype

2021-09-05 22:45:38 字數 1118 閱讀 5395

#include using namespace std; // 虛擬基類,所有原型的基類,提供clone介面函式 class prototype virtual ~prototype(){} virtual prototype* clone() = 0; }; // 派生自prototype,實現clone方法 class concreteprototype1 : public prototype ; // 派生自prototype,實現clone方法 class concreteprototype2 : public prototype ; concreteprototype1::concreteprototype1() concreteprototype1::~concreteprototype1() concreteprototype1::concreteprototype1(const concreteprototype1&) prototype* concreteprototype1::clone() concreteprototype2::concreteprototype2() concreteprototype2::~concreteprototype2() concreteprototype2::concreteprototype2(const concreteprototype2&) prototype* concreteprototype2::clone() void main() 作用:

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。

uml結構圖:

抽象基類:

1)prototype:虛擬基類,所有原型的基類,提供clone介面函式

介面函式:

1)prototype::clone函式:純虛函式,根據不同的派生類來例項化建立物件.

解析:prototype模式其實就是常說的"虛擬建構函式"乙個實現,c++的實現機制中並沒有支援這個特性,但是通過不同派生類實現的clone介面函式可以完成與"虛擬建構函式"同樣的效果.舉乙個例子來解釋這個模式的作用,假設有一家店鋪是配鑰匙的,他對外提供配製鑰匙的服務(提供clone介面函式),你需要配什麼鑰匙它不知道只是提供這種服務,具體需要配什麼鑰匙只有到了真正看到鑰匙的原型才能配好.也就是說,需要乙個提供這個服務的物件,同時還需要乙個原型(prototype),不然不知道該配什麼樣的鑰匙.

設計模式 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是乙個固定的流程,很顯然,從乙個狀態已經...