我正在尝试为不同的相机类型设计一个通用的硬件外观界面。下面是我不完整的相机设备通用界面
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*接口,并在我的通用硬件外观/代理接口中使用它,这样它的客户端就不会在我交换相机时改变。这是一个设计问题,我正在寻找一些想法/例子。也许我需要换个方向思考?
提前感谢
发布于 2019-12-13 11:59:16
通过将特定于相机的类Data和Configuration作为模板参数添加到您的界面中,它不再是一个真正通用的、与相机无关的接口。客户端必须了解摄像机支持的数据和配置类,并且只能在使用完全相同数据和配置类的摄像机之间切换。
如果您希望能够在使用不同数据和/或配置类的不同摄像机之间进行交换,而不必重新编译客户端,则客户端使用的接口必须完全不知道这些差异。这意味着泛型CameraDevice接口还必须使用泛型Data接口和泛型Configuration接口。
https://softwareengineering.stackexchange.com/questions/402421
复制相似问题