Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 尝试遵循MVC-寻求关于良好设计的建议_Objective C_Oop_Model View Controller - Fatal编程技术网

Objective c 尝试遵循MVC-寻求关于良好设计的建议

Objective c 尝试遵循MVC-寻求关于良好设计的建议,objective-c,oop,model-view-controller,Objective C,Oop,Model View Controller,我刚刚恢复了一个旧项目的工作,并一直在考虑重写其中的一些部分 我的问题涉及如何组织我的程序。我一直在尝试遵循MVC范式。我将从解释现状开始:该程序处理4种类型的图像:偏移、暗、平场和光。我有一个名为Image的类,它可以表示所有这些。从光中减去偏置和暗,然后用平场除以光。最初,我打算用两个类来做这个,一个叫做CalibrationImage,另一个叫做Light。但区别只是一种方法,那就是我上面提到的除法函数。否则,它们是相同的。所以我决定不为此而上两门课 程序中的第二个主要类涉及处理多个图像对

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

我的问题涉及如何组织我的程序。我一直在尝试遵循MVC范式。我将从解释现状开始:该程序处理4种类型的图像:偏移、暗、平场和光。我有一个名为
Image
的类,它可以表示所有这些。从光中减去偏置和暗,然后用平场除以光。最初,我打算用两个类来做这个,一个叫做CalibrationImage,另一个叫做Light。但区别只是一种方法,那就是我上面提到的除法函数。否则,它们是相同的。所以我决定不为此而上两门课

程序中的第二个主要类涉及处理多个
图像
对象——这个类称为
ImageStacker
。现在,它将
Image
对象保存在一个可变数组中。它可以在此阵列上执行各种操作,如堆叠所有图像、校准图像等

此类还充当主窗口中
NSTableView
对象的数据源。我不认为我应该有4个数组,每个数组保存一种类型的图像(比如,一个用于灯光的数组,另一个用于暗色的数组等),而不是一个可变数组。一旦程序开始实际工作,它将变暗、变平场和偏移帧。然后,它将校准灯光阵列中的每个对象,然后堆叠它们。我觉得这为程序提供了逻辑上的进展。这也有点容易想象


这是一个好的程序设计吗?它遵循MVC吗?在我看来,我的视图是
NSTableView
,控制器是
NSApplication
,模型是
ImageStacker
。但是,
Image
感觉它不是MVC的一部分,但是我不知道没有它怎么写程序。

我的2美分:MVC是一种演示设计模式。除了MVC部分之外,我通常会使用单独的业务层和数据层编写我的MVC应用程序。可以肯定的是,
Image
不属于MVC模式,它可能更适合您定义为业务层的一组类。有很多关于编程设计模式的好书、博客和文章,所以我不会重复他们已经做过的事情。简单地问这个问题是一个好的开始。我建议您通过查看已有的内容来进行后续操作