2011-06-09 55 views
6

我刚刚恢复了一个旧项目的工作,并一直在考虑重写它的某些部分。试图遵循MVC - 在一个好的设计上寻求建议

我的问题涉及如何构建我的程序。我一直在试图遵循MVC范式。我将首先解释事情的立场:该程序处理4种类型的图像:偏压,黑暗,平场和灯光。我有一个名为Image的课程,可以表示所有这些。从光中减去偏压和暗光,然后光由平场分开。最初,我将为此使用2个类,一个叫CalibrationImage,另一个叫Light。但差异只是一种方法,这将是我上面提到的分割功能。否则,他们是一样的。所以我决定不要为此而设两个班。

该计划中的第二个主要课程涉及处理多个Image对象 - 此类被称为ImageStacker。截至目前,它将Image对象保存在可变数组中。它可以对此阵列执行各种操作,如堆叠所有图像,校准它们等。

此类还可用作主窗口中NSTableView对象的数据源。我没有想过,而不是有一个单一的可变数组,我应该有4个数组,每个数组都持有一个图像类型(例如,一个数组的灯光,另一个黑暗等)。一旦程序开始其实际工作,它将黑暗,平场和偏置帧。然后它将校准Lights数组中保存的每个对象,然后将它们堆叠起来。我觉得这样可以为程序提供合理的进程。它也易于可视化。

这是一个很好的程序设计吗?它遵循MVC吗?正如我所看到的,我的观点是NSTableView,控制器是NSApplication,型号是ImageStacker。但是,然后,Image感觉它不是MVC的一部分,但我不知道如何编写没有它的程序。

回答

1

我的2分钱:MVC是一种演示设计模式。除了MVC部分,我通常会使用单独的业务和数据层来编写我的MVC应用程序。可以确定Image不是MVC模式的一部分,它可能更适合您将定义为业务层的一组类。有很多好书,博客和文章讨论编程设计模式,所以我不会重申他们已经做了什么。简单地问这个问题是一个好的开始。我建议你通过查看已经可用的内容来追踪。

+0

请您指点一本书,您认为这本书可以给予适当的治疗吗? – saad 2011-06-10 21:17:35