我正在开发一个应用程序,其最低层由输入输出通信设备(例如串行端口)组成。
为了以最少的努力实现更有价值的工具,相邻层应不受通信介质(例如以太网或 USB)变化的影响。如果我没记错的话,这声称使用了依赖倒置原则等。我看过一些例子。
class DataIOClient
{
public:
DataIOClient(void){}
~DataIOClient(void){}
virtual void WriteData(DataIOClientData* data) = 0;
virtual void ReadData(DataIOClientData* data) = 0;
};
该接口及其相应的实现(取决于所选的通信架构)应该将我的上层与通信层解耦。
但是,我遇到了初始化的问题。由于每种架构都需要不同的初始化参数(例如,COMPort 中的 9600 8N1 或以太网中的 192.168.1.2 或并行端口通信的 LPT1),我无法弄清楚依赖方案或底层抽象以使其可行。
如果 DataIOClient 先验地“知道”实现请求的输入参数,它将被耦合并且不再依赖倒置,对吗?我有一种模糊的感觉,我没有正确理解这个原则的正确应用。
谢谢