C語言和設計模式(之原型模式) 03

2022-03-24 14:23:22 字數 1330 閱讀 5467

原型模式本質上說就是對當前資料進行複製。就像變戲法一樣,乙個鴿子變成了兩個鴿子,兩個鴿子變成了三個鴿子,就這麼一直變下去。在變的過程中,我們不需要考慮具體的資料型別。為什麼呢?因為不同的資料有自己的複製型別,而且每個複製函式都是虛函式。

用c++怎麼編寫呢,那就是先寫乙個基類,再編寫乙個子類。就是這麼簡單。

[cpp]view plain

copy

class

data  

virtual

~data() {}  

virtual

class

data* copy() = 0;  

};  

class

data_a : 

public

data  

~data_a() {}  

class

data* copy()  

};  

class

data_b : 

public

data  

~data_b() {}  

class

data* copy()  

};  

那怎麼使用呢?其實只要乙個通用的呼叫介面就可以了。

[cpp]view plain

copy

class

data* clone(

class

data* pdata)  

就這麼簡單的乙個技巧,對c來說,當然也不是什麼難事。

[cpp]view plain

copy

typedef

struct

_data  

data;  

假設也有這麼乙個型別data_a,

[cpp]view plain

copy

data data_a = ;  

既然上面用到了這個函式,所以我們也要定義啊。

[cpp]view plain

copy

struct

_data* data_copy_a(

struct

_data* pdata)  

;   

使用上呢,當然也不含糊。

[cpp]view plain

copy

struct

_data* clone(

struct

_data* pdata)  

C語言和設計模式(之原型模式)

原型模式本質上說就是對當前資料進行複製。就像變戲法一樣,乙個鴿子變成了兩個鴿子,兩個鴿子變成了三個鴿子,就這麼一直變下去。在變的過程中,我們不需要考慮具體的資料型別。為什麼呢?因為不同的資料有自己的複製型別,而且每個複製函式都是虛函式。用c 怎麼編寫呢,那就是先寫乙個基類,再編寫乙個子類。就是這麼簡...

C 設計模式03 原型模式

好久沒有寫部落格了,因為過年實在太忙了,家裡也沒有網路,今天第一天上班就先寫一篇吧。話不多說,今天要寫的內容是 原型模式,它也是建立型模式中的一種 首先來看定義 使用原型例項指定待建立物件的型別,並且通過複製這個原型來 建立新的物件。理解定義之前先看一幅圖 孫悟空可以變出很多個和自己一模一樣的猴子,...

c 設計模式之原型模式

原型模式prototype pattern 定義 原型模式一種物件建立型模式,她採用複製物件原型的方法來建立物件的例項。使用原型模式建立的例項,具有與原型一樣的資料。注意 1 由原型物件自身建立目標物件。也就是說,物件建立這一動作發自原型物件本身。2 目標物件是原型物件的乙個轉殖。也就說,通過原型模...