我需要一些软件设计方面的帮助。假设我有一个相机,它获取数据,将它们发送到过滤器,并一次显示一个图像。
现在,我想要的是等待两个图像,然后将这两个图像发送到过滤器,并将它们都显示在屏幕上。
我想到了两个选项,我想知道该选择哪一个:在我的Acquisitioner (或其他什么)类中,我是否应该在将两个图像发送到Filterer类之前放置一个等待两个图像的队列?我应该把一个累加器类放在Acquisitionner和Filterer之间吗?
两个都可以,但是你认为哪一个更好呢?
谢谢!
发布于 2012-04-20 04:36:04
为了给出一个直接的答案,我将在一个单独的对象中实现累加器策略。原因如下:
在过去从事类似设计的工作中,我发现将此模型中的不同“参与者”视为源和汇非常有帮助。源对象将能够产生图像或将图像输出到附加的接收器对象。这个系统中的过滤器或累加器将被设计为管道--换句话说,它们将实现接收器和源的接口。一旦你想出了一种连接泛型源、管道和接收器的机制,就很容易将累加策略实现为管道,对于接收到的每个nth图像,如果n是奇数,它将保持它;如果n是偶数,则输出这两个图像。
一旦有了这个系统,您就可以轻松地更换源文件(图像文件阅读器、电影解码器、相机捕获接口)、接收器(图像文件或电影编码器、显示查看器等)和管道(过滤器、累加器、编码器、多路复用器),而不会中断其余代码。
发布于 2012-04-20 04:32:44
那得看情况。但是,如果你的队列所做的就是等待第二个图像的到来,我想你可以简单地在Acquisitioner中实现它。
另一方面,如果你想在那里加入任何额外的功能,那么增加模块性和所有与之相伴而来的好处都不会有一丁点伤害。
我认为在这个特殊的情况下,这并不重要。
https://stackoverflow.com/questions/10236173
复制相似问题