我们可以在系统设计之初确定好各功能模块的接口格式。

实际编码时,在框架中预留业务函数对应的函数指针。然后写出不同业务环境对应的不同业务函数,在实际运行时,通过预配置函数,根据具体的环境将适合的业务函数赋值给预留的接口函数指针。

以此实现解耦性或者跨平台。

例如:

static int (*f)(void*, int) = NULL; //业务函数指针

//环境一
int f1(void* memory, int param)
{
    return 0;
}

//环境2
int f2(void* memory, int param);
{
    return 0;
}

//预配置函数
int config()
{
#if ENV == ENV_1
    f = &f1;
#elif ENV == ENV_2
    f = &f2;
#endif
    return 0;
}

//Demo
int f_run(void* memory, int param)
{
    config();
    if(f!=NULL)
    {
        (*f)(memory, param);
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注