首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设计通用硬件接口

设计通用硬件接口
EN

Software Engineering用户
提问于 2019-12-12 15:12:53
回答 1查看 163关注 0票数 -2

我正在尝试为不同的相机类型设计一个通用的硬件外观界面。下面是我不完整的相机设备通用界面

代码语言:javascript
运行
复制
template <class Data,class Configuration>
class CameraDevice : public Device {
public:
    CameraDevice(DeviceModel model);
    virtual void startStreaming(std::function<void(Data &data)> callback) = 0;
    virtual void stopStreaming() = 0;
    virtual void setConfiguration(const Configuration configuration) = 0;
    virtual ~CameraDevice();
}; 

Data =设备生成的数据类型。这在不同的硬件中是不同的。

Configuration =设备配置类,它在不同的硬件中也不同

我创建了一个具有定义的数据和配置类型的具体子类,并为虚拟类提供了实现。

现在,我的问题是如何使用这个CameraDevice*接口,并在我的通用硬件外观/代理接口中使用它,这样它的客户端就不会在我交换相机时改变。这是一个设计问题,我正在寻找一些想法/例子。也许我需要换个方向思考?

提前感谢

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2019-12-13 11:59:16

通过将特定于相机的类DataConfiguration作为模板参数添加到您的界面中,它不再是一个真正通用的、与相机无关的接口。客户端必须了解摄像机支持的数据和配置类,并且只能在使用完全相同数据和配置类的摄像机之间切换。

如果您希望能够在使用不同数据和/或配置类的不同摄像机之间进行交换,而不必重新编译客户端,则客户端使用的接口必须完全不知道这些差异。这意味着泛型CameraDevice接口还必须使用泛型Data接口和泛型Configuration接口。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/402421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档