2012-04-19 64 views
1

我需要軟件設計方面的一些幫助。比方說,我有一臺相機可以進行採集,將它們發送到過濾器,並一次顯示一個圖像。採集累加器(軟件設計)

現在,我想要的是等待兩個圖像,之後,將兩個圖像發送到過濾器,並將它們都發送到屏幕。

我想到了兩個選擇,我想知道要選擇哪一個: 在我的Acquisitioner(或其他)類中,我應該在發送給Filterer類之前等待兩個圖像的隊列嗎? 我應該在收購者&過濾器之間放置一個蓄能器類嗎?

兩者都會在最後工作,但哪一個你認爲會更好?

謝謝!

+1

是否不斷獲取圖像(例如,以固定比率)?你需要重複這個過程,還是隻做一次?過濾器處理是否具有確定性(按時間)?是否有內存限制?剩下的管道如何工作?有太多未解決的問題需要提出一個(正確的)答案。 – 2012-04-19 20:35:30

回答

0

這取決於。但是,如果你的隊伍所做的一切都在等待第二張圖片的來臨,我估計你可以直接在收購方中實施它。另一方面,如果您想要在其中添加任何其他功能,那麼添加模塊化功能以及與之攜手並進的所有優勢不會影響一點點。

在這種特殊情況下,我認爲這不重要。

1

爲了給出直接的答案,我將在單獨的對象中實施累加器策略。這裏的原因是:

在過去類似的設計工作,我發現它非常有用認爲在這個模型中不同的「角色」作爲來源。 A 來源對象將能夠產生或輸出圖像到所附的接收器對象。該系統中的過濾器或蓄能器將被設計爲管道 - 換句話說,它們將實現接頭接收器。一旦你想出一個連接通用源,管道和匯的機制,就很容易實現一個積累策略作爲一個管道,如果n是奇數,那麼對於每一個接收到的圖像都會保留,並且同時輸出其中,如果n是偶數。一旦你有了這個系統,你就可以輕鬆地更換出源(圖像文件閱讀器,電影解碼器,相機捕捉界面),水槽(圖像文件或電影編碼器,顯示器觀看者等)和管道(濾波器,累加器,編碼器,多路複用器),而不會中斷其他代碼。