多平台适配的代码设计
2012-06-20 21:55
155 查看
一个成功的软件系统,往往需要根据需求在不同的系统平台上运行,为了解决系统在多个平台的移植带来的风险,业务架构往往会设计相应的平台适配层来隔离不同平台的差异,如何设计一个易于扩展的平台适配层,是软件设计人员需要考虑的问题。
设计1:
1: 提供平台接口文件os.h
2:定义如下:
3:通过定义不同的系统宏,这个头文件展开后也就成了对应的平台的接口层。
4:业务代码直接调用OS_Fun()这个统一的接口即可。
5:该设计只需要一个通用的接口文件和对应不同平台的实现文件。
设计2:
1:提供平台接口文件os.h,并且提供一个平台的接口实现文件os.c
2:os.h定义如下:
3:os.c定义如下:
4: 通过定义不同的系统宏,源文件对应不同的平台实现。
5:业务代码直接调用OS_Fun()这个统一的接口。
第一种设计看起来更加简洁,所有的适配都在一个头文件里面搞定,问题是第一种设计扩展性好吗?笔者曾经遇到一个项目,平台提供一个消息发送接口,本系统的所有消息发送都需要调用这个接口,在原有系统上都运行的没问题,但后来需要切换平台,由于两套系统的具有不同的大小端模式,这就要求我们对所有出口消息进行大小端转换,如果用第一种设计方式,处理起来就比较麻烦了,就算想办法解决了,但也破坏了原有的设计思想。用第二种设计方式我们只需要在适配层加一个统一大小端的处理函数即可。
在设计框架的时候,我们尽量要考虑到变化,我可能不知道未来是否会变化,但可以一开始就设计出适应变化的架构。
设计1:
1: 提供平台接口文件os.h
2:定义如下:
#ifdef OS1 #define OS_Fun OS1_Fun #endif #ifdef OS2 #define OS_Fun OS2_Fun #endif void OS_Fun();
3:通过定义不同的系统宏,这个头文件展开后也就成了对应的平台的接口层。
4:业务代码直接调用OS_Fun()这个统一的接口即可。
5:该设计只需要一个通用的接口文件和对应不同平台的实现文件。
设计2:
1:提供平台接口文件os.h,并且提供一个平台的接口实现文件os.c
2:os.h定义如下:
void OS_Fun();
3:os.c定义如下:
#ifdef OS1 #include "OS1.h" #endif #ifdef OS2 #include "OS2.h" #endif #ifdef OS1 void OS_Fun() { OS1_Fun(); } #endif #ifdef OS2 void OS_Fun() { OS2_Fun(); } #endif
4: 通过定义不同的系统宏,源文件对应不同的平台实现。
5:业务代码直接调用OS_Fun()这个统一的接口。
第一种设计看起来更加简洁,所有的适配都在一个头文件里面搞定,问题是第一种设计扩展性好吗?笔者曾经遇到一个项目,平台提供一个消息发送接口,本系统的所有消息发送都需要调用这个接口,在原有系统上都运行的没问题,但后来需要切换平台,由于两套系统的具有不同的大小端模式,这就要求我们对所有出口消息进行大小端转换,如果用第一种设计方式,处理起来就比较麻烦了,就算想办法解决了,但也破坏了原有的设计思想。用第二种设计方式我们只需要在适配层加一个统一大小端的处理函数即可。
#ifdef OS1 void OS_SendMsg() { HTON(); OS1_SendMsg(); } #endif #ifdef OS2 void OS_SendMsg() { HTON(); OS2_SendMsg(); } #endif
在设计框架的时候,我们尽量要考虑到变化,我可能不知道未来是否会变化,但可以一开始就设计出适应变化的架构。
相关文章推荐
- 多平台适配的代码设计
- 多平台适配的代码设计
- 多平台适配的代码设计
- [安卓,android源码] Android平台替代虚拟按键悬浮球,参考魅族悬浮球设计。捡代码论坛整理提供
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(3):寻找正确的代码版本
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(4):验证代码并编写自己的device
- 应用框架的设计与实现——.NET平台4.2代码测试问题解决
- 应用框架的设计与实现——.NET平台(9 消息队列服务代码分析)
- Windows平台下程序日志的设计和实现(下:代码)
- Windows平台下程序日志的设计和实现(下:代码)
- 应用框架的设计与实现——.NET平台(4.3 SAF代码分析)
- 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)
- 使用本地代码设计跨平台的Java UI代码
- [朝花夕拾]基于C#的模拟仿真平台设计(部分)及服务器异步通信代码
- Windows平台下程序日志的设计和实现(下:代码)
- 应用框架的设计与实现——.NET平台4.2代码测试
- 实时数据平台设计:技术选型与应用场景适配模式 - 大数据
- 实时数据平台设计:技术选型与应用场景适配模式 - 大数据
- 网页设计之精华代码
- 分享:DFC开发平台的设计理念