1

我需要一些软件设计方面的帮助。假设我有一台相机,它可以获取数据,将它们发送到过滤器,并一次显示一个图像。

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

我想到了两个选项,我想知道选择哪一个:在我的 Acquisitioner(或其他)类中,我是否应该放置一个队列,等待两个图像,然后再将它们发送到 Filterer 类?我应该在 Acquisitionner 和 Filterer 之间放置一个 Accumulator 类吗?

两者最终都会起作用,但你认为哪一个会更好?

谢谢!

4

2 回答 2

1

为了给出直接的答案,我将在一个单独的对象中实现Accumulator策略。原因如下:

在过去从事类似设计的工作时,我发现将此模型中的不同“参与者”视为非常有帮助。对象将能够生成或输出图像到附加的接收对象。该系统中的过滤器或累加器将被设计为管道——换句话说,它们将实现接收器的接口。一旦你想出了一种连接通用源、管道和接收器的机制,就很容易将累积策略实现为管道,对于n接收到的每个图像,如果n是奇数,它将保持它,并输出它们, 如果n是偶数。

一旦你有了这个系统,你就可以轻松地改变源(图像文件阅读器、电影解码器、相机捕捉接口)、接收器(图像文件或电影编码器、显示查看器等)和管道(过滤器、累加器、编码器,多路复用器),而不会破坏您的其余代码。

于 2012-04-19T20:36:04.440 回答
0

这取决于。但是,如果您的队列所做的只是等待第二张图像的出现,我认为您可以简单地在 Acquisitioner 中实现它。

另一方面,如果您想在那里合并任何其他功能,那么增加模块化和与之相伴的所有好处都不会受到丝毫伤害。

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

于 2012-04-19T20:32:44.443 回答