我刚刚恢复了一个旧项目的工作,并且一直在考虑重写它的某些部分。
我的问题与如何构建我的程序有关。我一直在尝试遵循 MVC 范例。我将从解释情况开始:该程序处理 4 种类型的图像:偏置、暗部、平场和亮部。我有一个名为 Image
的类可以表示所有这些。从 Light 中减去 Bias 和 Dark,然后 Light 除以 Flat Field。最初,我打算为此使用 2 个类,一个称为 CalibrationImage,另一个只是 Light。但区别仅在于一种方法,即我上面提到的除法函数。否则,它们是相同的。所以我决定不为此目的开设两个类(class)。
程序中的第二个主要类涉及处理多个 Image
对象——这个类被称为 ImageStacker
。截至目前,它在可变数组中保存 Image
对象。它可以在这个数组上做各种操作,比如堆叠所有图像,校准它们等。
此类还充当主窗口中 NSTableView
对象的数据源。我不认为我应该有 4 个数组,而不是一个单一的可变数组,每个数组都指定了一种图像类型(例如,一个数组用于灯光,另一个数组用于黑暗等)。一旦程序开始实际工作,它就会显示暗帧、平场和偏置帧。然后它将校准 Lights 阵列中保存的每个对象,然后堆叠它们。我觉得这为程序提供了合乎逻辑的进展。它也有点容易形象化。
这样的程序设计好吗?它遵循 MVC 吗?如我所见,我的 View 是 NSTableView
, Controller 是 NSApplication
,模型是 ImageStacker
。但是,Image
感觉它不是 MVC 的一部分,但我不知道如何在没有它的情况下编写程序。
最佳答案
My 2-cents:MVC 是一种演示设计模式。除了 MVC 部分之外,我通常会使用单独的业务和数据层来编写我的 MVC 应用程序。没关系,Image
不是 MVC 模式的一部分,它可能更适合您定义为业务层的一组类。有很多关于编程设计模式的好书、博客和文章,所以我不会重复他们已经做过的事情。简单地问这个问题是一个好的开始。我建议您通过查看已经可用的内容来完成。
关于objective-c - Trying to follow MVC - 寻求良好设计的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294969/