采集累加器(软件设计)

时间:2012-04-19 20:25:32

标签: c++ architecture software-design acquisition

我需要一些软件设计方面的帮助。假设我有一台相机可以进行采集,将它们发送到滤镜,并一次显示一张图像。

现在,我想要的是等待两个图像,之后将两个图像发送到过滤器,然后将它们两个发送到屏幕。

我想到了两个选项,我想知道选择哪一个: 在我的采集器(或其他)类中,我应该在将它们发送到Filterer类之前放置等待两个图像的队列吗? 我是否应该在Acquisitionner& amp; amp; Filterer?

两者最终都会奏效,但你觉得哪一个更好?

谢谢!

2 个答案:

答案 0 :(得分:1)

要直接回答,我会在单独的对象中实施累加器策略。原因如下:

过去在处理类似的设计时,我发现将此模型中的不同“角色”视为来源汇总非常有帮助。 对象将能够生成或输出图像到附加的 sink 对象。此系统中的过滤器或累加器将设计为管道 - 换句话说,它们将实现接收器的接口。一旦你想出了一个连接通用源,管道和接收器的机制,就可以很容易地将累积策略实现为一个管道,对于收到的每{{}}个图像,如果{{1如果n是偶数,则为奇数,并输出它们。

一旦你拥有了这个系统,你可以轻而易举地更换出来源(图像文件阅读器,电影解码器,相机捕捉界面),接收器(图像文件或电影编码器,显示器查看器等)和管道(过滤器) ,累加器,编码器,多路复用器),而不会破坏你的其余代码。

答案 1 :(得分:0)

这取决于。但是,如果你的队列所做的一切都在等待第二张图片的到来,我估计你可以直接在收购者中实现它。

另一方面,如果你想在那里加入任何附加功能,那么增加模块化和与之相伴的所有好处不会伤害到一点点。

在这种特殊情况下,我认为这并不重要。