【发布时间】:2013-08-07 21:05:26
【问题描述】:
我一直在对不同的设计模式进行大量研究,并试图确定正确的方法。
我正在开发一个图像上传 MVC 应用程序,它需要以几种不同的方式处理图像,例如创建缩略图和保存数据库记录。解决这个问题的最佳方法是通过享元模式吗?以此为例:
var image = new Image();
List<IProcessors> processors = processorFactory.GetProcessors(ImageType.Jpeg);
foreach(IProcessor processor in processors)
{
processor.process(image);
}
我也有这个问题的第二部分。如果处理器有较小的相关“子处理器”怎么办?我脑海中的一个例子是书籍生成器。
I have a book generator
that has page generators
that has paragraph generators
that has sentence generators
这也是享元模式吗?我将如何处理那棵树的遍历?
编辑
我在下面问了这个问题,但我想在这里添加它:
我看到的所有关于复合模式的示例似乎都与值的处理有关,而享元模式似乎与对象状态的处理(或共享)有关。我只是读了太多的例子吗?将这些模式结合起来会是解决方案吗?
【问题讨论】:
-
哟,老兄。我听说你喜欢事物里面的东西,所以我给你一个复合材料里面的复合材料,这样你就可以复合复合材料了! (en.wikipedia.org/wiki/Composite_pattern)
-
Would combining the patterns be the solution?是的,这就是所谓的架构。模式本身并不能解决问题,它们只是解决问题的方法。 -
是的,我明白了。不幸的是,我在一个学习模式被认为是浪费时间的环境中工作。我想问这个问题以确保我的头朝着正确的方向前进
-
I, unfortunately, work in an environment where studying patterns is considered a waste of time.哈。我完全明白。唯一的“浪费时间”是大量时间浪费,因为代码没有被重构为任何有意义的架构,整个代码库不可避免地变成“只写” -
让一组顺序处理器就地处理您的数据更接近访问者模式。但是,以创建副作用为目的的处理(将缩略图保存到数据库等)不是访问者。您的示例具有责任链和命令模式的某些特性,但两者都不是。
标签: c# design-patterns tree flyweight-pattern