Prot otype 模式主要解決淺層拷貝和深層拷貝的問題,可是通常不是太差的程序員通常均可以免這種錯誤。 我的認爲它蘊含着一輩子二, 二生四的太極思想,程序員
可是在c語言中怎麼實現,有什麼應用場景呢?prototype
先給上代碼程序
typedef char data_type;並行
typedef struct prototypecall
{數據
data_type *data;語言
int data_len;錯誤
void (*func)(void * data);上傳
} prototype_t;data
prototype_t * clone(prototype_t *proto_type)
{
prototype_t *new_type = NULL;
if (NULL == proto_type)
{
return NULL;
}
new_type = (prototype_t *)calloc(1, sizeof(prototype_t));
if (NULL == new_type)
{
return NULL;
}
new_type->data = calloc(proto_type->data_len, sizeof(data_type));
if (NULL == new_type->buffer)
{
free(new_type);
new_type = NULL;
return;
}
memcpy(new_type->data, proto_type->data, proto_type->data_len);
new_type->func = proto_type->func;
return new_type;
}
應用場景:
舉個實際應用的例子,咱們要把數據進行網上傳輸,要求以下
一、儘可能少傳輸數據
二、認爲TCP CRC 校驗不可靠。
咱們須要作以下操做
一、給數據壓縮
二、給數從新算校驗值
通常實現方式能夠,先壓縮再算校驗值或者先算校驗再壓縮。可是若是須要儘量加快速度完成壓縮和校驗的計算,那麼咱們能夠將壓縮和校驗進行並行完成,這個時候prototype起做用了。 原始數據作壓縮,clone數據作校驗。 Prototype就起做用了
Prototype 模式:須要本尊和分身作不一樣的事情時,這個頗有用