您的位置:首页 > 编程语言 > C语言/C++

C语言设计模式:原型模式

2013-02-11 17:19 148 查看
/article/1797636.html

原型模式简单的理解,就是支持两个对象的复制。

原文有些啰嗦,修改如下:

1)结构体增加复制接口

[cpp] view
plaincopy

typedef struct _DATA

{

struct _DATA* (*copy) (struct _DATA* pData);

// 结构体数据

}DATA;

2)复制函数,可以支持不完全copy。(下面是完全复制的例子)

[cpp] view
plaincopy

struct _DATA* data_copy_func(struct _DATA* pData)

{

DATA* pResult = (DATA*)malloc(sizeof(DATA));

assert(NULL != pResult);

memmove(pResult, pData, sizeof(DATA));

return pResult;

};

3)用法

[cpp] view
plaincopy

struct _DATA* clone(struct _DATA* pData)

{

return pData->copy(pData);

}

Data_A = malloc(sizeof(_DATA));

Data_a->copy = data_copy_func;

//其他处理,A的赋值或引用

Data_B = clone(Data_A);

或者,当然前者更好。

Data_B = Data_A->copy(Data_A);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: