objective-c - Trying to follow MVC - 寻求良好设计的建议

标签 objective-c oop model-view-controller

我刚刚恢复了一个旧项目的工作,并且一直在考虑重写它的某些部分。

我的问题与如何构建我的程序有关。我一直在尝试遵循 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/

相关文章:

objective-c - 将字符串转换为正数或负数

iphone - 如何延迟执行 Segue

objective-c - 苹果操作系统 X : Get current username and home directory for current user from Directory Services

c++ - c++是否可以在不基于其基类的派生类中创建构造函数?

c++ - 指向对象类型的指针

c++ - 在 C++ 中对对象数组进行冒泡排序

iphone - 以编程方式访问 View Controller

ios - 为什么我的 UIPickerView 仅在不在 super View 中时才会响应?

php - 使用 PHP(PDO、MVC)将数据库中的数据放入变量中

model-view-controller - 如何使用Dart构建纸元素应用程序?