gpt4 book ai didi

c++ - 依赖倒置和设备独立数据

转载 作者:行者123 更新时间:2023-11-28 03:15:30 27 4
gpt4 key购买 nike

我正在开发一个应用程序,其最低层由输入输出通信设备(例如串行端口)组成。

为了以最少的努力实现更有值(value)的工具,相邻层应该不受通信介质(例如以太网或 USB)变化的影响。这声称,如果我没记错的话,依赖倒置原则的使用等等。我看过示例。

class DataIOClient
{
public:
DataIOClient(void){}
~DataIOClient(void){}

virtual void WriteData(DataIOClientData* data) = 0;
virtual void ReadData(DataIOClientData* data) = 0;
};

此接口(interface)及其相应的实现(取决于所选的通信架构)应该将我的上层与通信层分离。

但是,我遇到了初始化的问题。由于每个架构都要求不同的初始化参数(例如,COMPort 中的 9600 8N1 或以太网中的 192.168.1.2 或并行端口通信中的 LPT1),我无法弄清楚依赖方案或底层抽象以使其可行。

如果 DataIOClient 先验地“知道”实现请求的输入参数,它将耦合并且不再有依赖倒置,我说得对吗?我有一种模糊的感觉,我没有正确理解这个原则的正确应用。

谢谢

最佳答案

在我看来,带有参数的文本配置文件应该可以工作;您解析配置并调用合适的工厂函数:

.config:

IOClient = { type = "ethernet", config = { host = "12.34.56.78", port = "8080" } }

IOClient = { type = "usb", config = { } }

IOClient = { type = "serial", config = { device = "/dev/modem" } }

creator.cc:

item = read_tuple("IOClient");

std::unique_ptr<DataIOClient> = factory.create(item["type"], item["config"]);

关于c++ - 依赖倒置和设备独立数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17024024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com