2013-01-19 37 views
0

我有一個算法的列表,我想在圖像上運行去噪。我有幾種不同的算法去除圖片。假設我有denoise_1和denoise_2以及denoise_3。但在未來,我將需要添加denoise_4,validation_four等所有算法的策略模式和迭代器

我需要所有的降噪運行在圖片上,甚至是新的時候,他們被添加。

另外:如果我添加另一個算法,我必須通知系統。

我在考慮使用策略和觀察者模式,但我還沒有找到可接受的解決方案。

這是正確的嗎?

我很抱歉如果打開一個新的線程,我發現了一個類似的線程,但我不明白的解決方案。

+0

您應該分享其他線索,以便其他人可以澄清。 – mac10688

回答

0

是的策略是好的:
讓所有的去噪算法實現一個通用的接口。

+0

好的,但我的問題是: 第一:如何我可以使用圖片上的「所有」降噪算法??該策略告訴我可以使用一個,在運行時選擇。 二:在觀察者模式中,誰觀察誰? 第三:如何通知系統添加新算法? 非常感謝 – user1993478

+0

1.在一個循環中; 2.這是另一個問題,3.算法一般在啓動時初始化,不需要在運行時添加去噪器 – AlexWien

+0

因此對於第一個問題需要一個在方法中執行的算法列表(用於ex方法比較)? 第二和第三我很抱歉,但我不明白你的回答 – user1993478

0

說你所有的算法實現相同的DenoiseAlgorithm。只需將所有算法放在List<DenoiseAlgorithm>中,並通過遍歷該列表逐個運行它們。

如果列表是全局的,則添加新算法(在開始或結束時,您決定)對整個系統具有全局影響。

也考慮模式。

+0

好吧,首先感謝alexWien和Tomasz Nurkiewicz。 然後... 創建一個算法列表我不需要使用觀察者,我不需要通知任何東西,對吧? – user1993478