工厂模式,其实就是C++中的类的继承,只不过用C语言中的函数指针来实现了。
假设现在的需求是公司生产一系列产品,包括椅子,床等,要求先生产产品,然后将生产的产品销售出去。将来可能要增加新的产品,不希望修改现有的核心代码流程,满足开闭原则。
/*
工厂模式,其实就是C++中的类的继承,只不过用C语言中的函数指针来实现了
*/
/*
假设现在的需求是公司生产一系列产品,包括椅子,床等,要求先生产产品,然后将
生产的产品销售出去。
将来可能要增加新的产品,不希望修改现有的核心代码流程,满足开闭原则
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct PRO_STR
{
void (*produce)(struct PRO_STR *pthis);
void (*sell)(struct PRO_STR **pthis);
} PRO_STR, *pPRO_STR;
// 实现两个接口
void produceProduct(PRO_STR *pthis) {
if (pthis == NULL) return;
pthis->produce(pthis);
}
void sellProduct(PRO_STR **pthis) {
if (pthis == NULL || *pthis == NULL) return;
(*pthis)->sell(pthis);
free(*pthis);
*pthis = NULL;
}
pPRO_STR createChair();
pPRO_STR createBed();
// 工厂创建接口
pPRO_STR