我刚刚恢复了一个旧项目的工作,一直在考虑重写它的某些部分。
我的问题涉及如何构建我的程序。我一直在努力遵循MVC范式。我将从解释事物的位置开始:程序操纵4种类型的图像:偏差,黑暗,平场和灯光。我有一个名为Image
的班级,可以代表所有这些。从光中减去偏差和暗,然后将光除以平场。最初,我打算使用2个类,一个名为CalibrationImage,另一个名为Light。但差异只是一种方法,它将是我上面提到的分裂函数。否则,他们是一样的。所以我决定不为此目的设两门课。
该计划的第二个主要课程涉及处理多个Image
个对象 - 此类称为ImageStacker
。截至目前,它在可变数组中保存Image
个对象。它可以对此阵列执行各种操作,例如堆叠所有图像,校准它们等。
此类还充当主窗口中NSTableView
对象的数据源。我没有想到,我应该有4个数组,每个数组都指定一个类型的图像(比如,一个用于Lights的数组,另一个用于Darks等)。一旦程序开始实际工作,它将是Darks,Flat Fields和Bias框架。然后,它将校准Lights数组中保存的每个对象,然后将它们堆叠起来。我觉得这为程序提供了合乎逻辑的进展。它也有点容易想象。
这是一个很好的程序设计吗?它遵循MVC吗?在我看来,我的观点为NSTableView
,控制器为NSApplication
,模型为ImageStacker
。但是,Image
感觉它不是MVC的一部分,但我不知道如何在没有它的情况下编写程序。
答案 0 :(得分:1)
我的2美分:MVC是一种演示设计模式。我通常会将我的MVC应用程序与MVC部分分开编写单独的业务和数据层。可以Image
不是MVC模式的一部分,它可能更适合您定义为业务层的一组类。有很多好书,博客和文章都在讨论编程设计模式,所以我不会重复他们已经做过的事情。简单地问这个问题是一个好的开始。我建议您通过查看已有的内容来完成。