2013-01-19 26 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