模块对外提供接口 技巧总结
2009-02-21 09:24
381 查看
1: 一个模块需要对外开放一些接口, 使外部可以访问本模块的东东.
最简单/最方便的对外接口是:
SetXXX1()
SetXXX2()
SetXXX3()
GetXXX1()
GetXXX2()
GetXXX3
对每一个类似的功能实现一个对外的接口, 但是这样导致的问题是, 接口太多, 比较乱.
可以提供一个通用的设置/获取数据结构的接口.
EG 1:
int SetxEyeInterfaceState(void* wantState)
由于只有一个参数, wantState,必须为一个固定的结构体.
比如:
//设置/获取界面元素
struct xEyeInterFaceState
{
int iType; //类型标识1
char strName[64]; //类型标识2(也可做类型描述)
float fParameter[10]; //自定义参数(缓冲区)
};
EG 2:
int SetxEyeInterfaceState(char* strName, void* wantState);
int SetxEyeInterfaceState(int iType, void* wantState);
这两个函数都具有两个参数, 这个函数区别与上面函数的特点在于, 可以提供更灵活的参数设置控制.
可以根据strName, 或 iType, 把wantState转换为不同的结构体.
///////////////////////////////
回调函数接口技巧.
回调函数, 一般都要保证有一个void*类型的参数传入, 可以给回调函数的实现者更强大的控制功能.
eg
void GetDeviceIDNotify( const xEyeDeivceIDMsg &msg )
比起
void GetDeviceIDNotify( const xEyeDeivceIDMsg &msg, void * )
少了些灵活性.
由于回调函数, 不可以是类成员函数, 所以, 回调函数实现里面仅能访问到全局的资源, 这给对c++面向对象的编码者带来了不爽, 如果采用第二种接口定义方式, void* 使得, 使用方可以把其类示例指针传递进去, 这样, 就可以在回调函数里面访问到类内部的变量或函数了.
最简单/最方便的对外接口是:
SetXXX1()
SetXXX2()
SetXXX3()
GetXXX1()
GetXXX2()
GetXXX3
对每一个类似的功能实现一个对外的接口, 但是这样导致的问题是, 接口太多, 比较乱.
可以提供一个通用的设置/获取数据结构的接口.
EG 1:
int SetxEyeInterfaceState(void* wantState)
由于只有一个参数, wantState,必须为一个固定的结构体.
比如:
//设置/获取界面元素
struct xEyeInterFaceState
{
int iType; //类型标识1
char strName[64]; //类型标识2(也可做类型描述)
float fParameter[10]; //自定义参数(缓冲区)
};
EG 2:
int SetxEyeInterfaceState(char* strName, void* wantState);
int SetxEyeInterfaceState(int iType, void* wantState);
这两个函数都具有两个参数, 这个函数区别与上面函数的特点在于, 可以提供更灵活的参数设置控制.
可以根据strName, 或 iType, 把wantState转换为不同的结构体.
///////////////////////////////
回调函数接口技巧.
回调函数, 一般都要保证有一个void*类型的参数传入, 可以给回调函数的实现者更强大的控制功能.
eg
void GetDeviceIDNotify( const xEyeDeivceIDMsg &msg )
比起
void GetDeviceIDNotify( const xEyeDeivceIDMsg &msg, void * )
少了些灵活性.
由于回调函数, 不可以是类成员函数, 所以, 回调函数实现里面仅能访问到全局的资源, 这给对c++面向对象的编码者带来了不爽, 如果采用第二种接口定义方式, void* 使得, 使用方可以把其类示例指针传递进去, 这样, 就可以在回调函数里面访问到类内部的变量或函数了.
相关文章推荐
- 关于linux播放器mplayer对外提供接口与界面整合的总结
- 关于linux播放器madplay对外提供接口与界面整合的总结
- 关于linux播放器madplay对外提供接口与界面整合的总结
- C++中模块(Dll)对外暴露接口的方式
- 为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- Android中HAL如何向上层提供接口总结-hw_device_t
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- iOS流媒体开发之一:总结系统提供的接口
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- 为Android 硬件抽象层(HAL)模块编写JNI 方法提供Java 访问硬件服务接口
- Android中HAL如何向上层提供接口总结
- Android中HAL如何向上层提供接口总结
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- Android中HAL如何向上层提供接口总结
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- 在接口测试中怎么处理开发是否提供接口文档的总结
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- springboot+CXF开发webservice对外提供接口(转)