C ++中HAL实现的设计模式

时间:2017-03-16 10:16:26

标签: c++ design-patterns hal

您是否有任何关于在C ++中实现硬件抽象层的设计模式或技术的建议,以便我可以在构建时轻松切换平台?我正在考虑使用类似于我在GoF或C ++模板中读到的桥模式,但我不确定这是否是最佳选择。

2 个答案:

答案 0 :(得分:1)

我认为在构建时使用桥接模式不是一个好的选择。

这是我的解决方案:

将标准设备类定义为接口:

class Device {
    ... // Common functions
};

对于X86平台:

#ifdef X86 // X86 just is an example, user should find the platform define.
class X86Device: public Device{
    ... // special code for X86 platform
};
#endif

对于ARM平台:

#ifdef ARM // ARM just is an example, user should find the platform define.
class ARMDevice: public Device {
    ... // Special code for ARM platform
};
#endif

使用这些设备:

#ifdef X86
Device* dev = new X86Device();
#elif ARM
Device* dev = new ARMDevice();
#endif

编译选项:

$ g++ -DARM ... // using ArmDevice
$ g++ -DX86 ... // using X86Device

答案 1 :(得分:0)

有关更多提示,请参阅此问题的答案: Cross-Platform C++ code and single header - multiple implementations

当我遇到类似的问题时,我最终选择了PIMPL习惯。