Chapter09 原型模式

2022-08-13 04:48:19 字數 1969 閱讀 4115

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

原型模式其實就是從乙個物件再建立另外乙個可定製的物件,並且不需知道任何建立的細節。

一般在初始化資訊不發生變化的情況下,轉殖是最好的辦法。這既隱藏了物件的細節,有對效能是大大的提高。它等於是不用重新初始化物件,而是動態地獲得物件執行時的狀態。

所謂原型模式,其實就是在父類中定義乙個clone的抽象方法,其目的是讓子類來具體實現這個clone方法,此clone方法內實現物件建立以及欄位的複製。注意只是類內字段複製,也就是淺copy。

所謂淺copy就是被複製物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用都仍然指向原來的物件。而深copy則把引用的物件也copy了乙份。

原型的介面類 prototype

#ifndef _prototype_hpp

#define _prototype_hpp

class

prototype;

#endif

//

抽象介面的實現類concreteprototype1

#ifndef _concreteprototype1_hpp

#define _concreteprototype1_hpp#include

#include

#include

"prototype.hpp

"using

namespace

std;

class concreteprototype1:public

prototype

virtual prototype* clone()override

virtual

void printval()override

void seta(double

a)

void setb(int

b)private

:

double

a;

intb;

};#endif

//

抽象介面的實現類concreteprototype2

#ifndef _concreteprototype2_hpp

#define _concreteprototype2_hpp#include

#include

#include

"prototype.hpp

"using

namespace

std;

class concreteprototype2:public

prototype

virtual prototype* clone()override

virtual

void printval()override

void setstr(string

str)

void seta(double

a)private

:

string

str;

double

a; };

#endif

//

客戶端**

#include#include

"concreteprototype1.hpp

"#include

"concreteprototype2.hpp

"using

namespace

std;

intmain()

C 09原型模式

原型模式 prototype 用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。原型模式的結構圖 prototype原型類,宣告乙個轉殖自身的介面 concreteprototype具體原型類,實現乙個轉殖自身的操作 client 讓乙個原型類物件轉殖自身 執行的是深拷貝 從而建立出乙個...

建立型模式 原型模式

使用原型例項指定建立物件的種類,並且通過轉殖這些原型建立新的物件 原理是將乙個原型物件傳給要發動建立的物件,該物件通過請求原型物件轉殖自己來建立過程 轉殖方法 public prototype clone jdk中為我們提供了轉殖的方法clone 從object繼承下來,乙個物件要實現轉殖,需要實現...

建立型模式 原型模式

原型 prototype 模式主要用於建立物件的轉殖,通常其最簡單的形式就是採用自定 clone 函式並 傳入物件引數以返回此物件的乙個副本,這在 python 實作上可使用內定 copy.cop y 或 copy.deepcopy 函式來達到此目的。當已有乙個物件但對此物件的某些部分會被變更卻又想...