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);
原型模式简单的理解,就是支持两个对象的复制。
原文有些啰嗦,修改如下:
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);
相关文章推荐
- 设计模式八(原型模式,python语言实现)
- 23. C语言和设计模式(之原型模式)
- C 语言-- 原型设计模式
- 设计模式C++实现--原型模式、模板方法模式
- Android设计模式系列(10)--SDK源码之原型模式
- Kotlin设计模式 - 原型模式(Prototype)
- Java设计模式之原型模式与深浅拷贝
- 设计模式五 之 原型模式(Prototype)
- C++设计模式实现--原型模式
- 创建型:设计模式之原型模式(五)
- 设计模式——创建型——原型模式
- 设计模式【1】:原型模式【创建对象】
- 设计模式-原型模式
- iOS常用设计模式——原型模式
- 设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- JAVA设计模式之原型模式
- 设计模式之原型模式
- 设计模式——原型模式(Prototype)
- 我所理解的设计模式(C++实现)——原型模式(Prototype Pattern)
- 【软考】设计模式-原型模式