原型模式本質上說就是對當前資料進行複製。就像變戲法一樣,乙個鴿子變成了兩個鴿子,兩個鴿子變成了三個鴿子,就這麼一直變下去。在變的過程中,我們不需要考慮具體的資料型別。為什麼呢?因為不同的資料有自己的複製型別,而且每個複製函式都是虛函式。
用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語言和設計模式(之原型模式) 03
原型模式本質上說就是對當前資料進行複製。就像變戲法一樣,乙個鴿子變成了兩個鴿子,兩個鴿子變成了三個鴿子,就這麼一直變下去。在變的過程中,我們不需要考慮具體的資料型別。為什麼呢?因為不同的資料有自己的複製型別,而且每個複製函式都是虛函式。用c 怎麼編寫呢,那就是先寫乙個基類,再編寫乙個子類。就是這麼簡...
c 設計模式之原型模式
原型模式prototype pattern 定義 原型模式一種物件建立型模式,她採用複製物件原型的方法來建立物件的例項。使用原型模式建立的例項,具有與原型一樣的資料。注意 1 由原型物件自身建立目標物件。也就是說,物件建立這一動作發自原型物件本身。2 目標物件是原型物件的乙個轉殖。也就說,通過原型模...
C 設計模式 之 原型模式
別名 轉殖模式 prototype 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。在程式設計中,經常面臨著 某些結構複雜的物件 的建立工作 由於需求的變化,這些物件經常面臨著劇烈的變化,但是它們卻擁有比較穩定一致的介面。問題來了 如何建立易變類的實體物件?解決方案 採用 原型轉殖 ...