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

本文介绍了如何在C语言中使用原型模式进行对象复制。通过定义包含复制接口的结构体,并实现复制函数,实现了对象的深拷贝。示例展示了如何创建原型对象并使用复制接口创建新的对象实例。
摘要由CSDN通过智能技术生成

http://blog.csdn.net/feixiaoxing/article/details/7075316

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

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

1)结构体增加复制接口

[cpp]  view plain copy
  1. typedef struct _DATA  
  2. {  
  3.     struct _DATA* (*copy) (struct _DATA* pData);  
  4.     // 结构体数据
  5. }DATA;  
 2)复制函数,可以支持不完全copy。(下面是完全复制的例子)

[cpp]  view plain copy
  1. struct _DATA* data_copy_func(struct _DATA* pData)  
  2. {  
  3.     DATA* pResult = (DATA*)malloc(sizeof(DATA));  
  4.     assert(NULL != pResult);  
  5.     memmove(pResult, pData, sizeof(DATA));  
  6.     return pResult;  
  7. };   
3)用法

[cpp]  view plain copy
  1. struct _DATA* clone(struct _DATA* pData)  
  2. {  
  3.     return pData->copy(pData);  
  4. }
  5. Data_A = malloc(sizeof(_DATA));
  6. Data_a->copy = data_copy_func;
  7. //其他处理,A的赋值或引用
  8. Data_B = clone(Data_A);
  9. 或者,当然前者更好。
  10. Data_B = Data_A->copy(Data_A);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值