原来在func中有:
if(a==0)
f0();
else if(a>0 and a<10)
f1();
else if(a> 50)
f2();
else
f3();
面向对象的思想里,把这个类拆成多个,使用策略模式可以去掉if语句。
如果在函数式语法系统里怎么处理方便呢?
如下:
添加一个函数指针:
void (* funPointer)()
funPointer pF;
func() 函数被简化为一句 pF();
在a改变时:
if(a==0)
pF = f0;
else if(a>0 and a<10)
pF = f1;
else if(a> 50)
pF = f2;
else
pF = f3;
经过这样处理可以避免每次执行功能函数时,进行状态检测。可以有效减少运算量。