早就听说c语言可以实现一部分的面向对象的特性。今日闲来无事,实现了一个模拟工厂模式的c语言程序,原理很简单,通过函数指针的变化来模拟的。
请看源码:
//author liangdong
//2013/6/4
//this program imitate a OO's factory mode by using a function pointer.
#include<stdio.h>
int twice(int num)
{
return num*2;
}
int threetimes(int num)
{
return num*3;
}
int fourtimes(int num)
{
return num*4;
}
void* judge(int times)
{
switch(times)
{
case 2:
return (void*)twice;
case 3:
return (void*)threetimes;
case 4:
return (void*)fourtimes;
default:
return NULL;
}
}
int main()
{
int (*func)(int)=NULL;
if((func=(int (*)(int))judge(2))!=NULL)
printf("%d",(*func)(2));
else
printf("input error!\n");
}