对MVC的一点帮助

时间:2010-05-07 16:09:02

标签: objective-c cocoa

我正在开发一个可可应用程序,用于在两个文件夹之间同步数据。

  • 它有个人资料(所以你可以有多个设置)
  • 可以分析数据
  • 可以同步数据
我有点困惑。首先,我真的不知道哪里有模特?你会建议多少个控制器? 1 WindowController或AnalyzeController,SyncController等。

自从我与MVC合作以来已经有一段时间了。我读过一些文章,但我遗漏了如何划分它的具体例子。

最好的问候。

1 个答案:

答案 0 :(得分:1)

数据模型处理数据和不同数据之间的抽象关系。控制器处理计算机或人机界面的具体操作。

关键部分是数据模型不知道数据来自何处,也不关心。例如,它可以为文件夹及其内容建模,但模型中的实际信息可能来自磁盘上的真实文件夹,也可能来自完全组成的plist文件,也可能来自文件夹的模拟UI。数据模型并不关心,因为它与具体的现实没有直接联系。它只包含数据的抽象描述。

相比之下,控制器与特定的具体界面相关联。例如,如果您有两个文件夹,则每个文件夹都有特定的控制器。每个控制器都具有到文件夹的现实路径的具体知识以及用于读取和写入文件夹的机制。因此,如果一个文件夹在本地硬盘驱动器上而另一个文件夹是远程的,则每个控制器都会理解其中的差异如果您有UI,那么UI将拥有自己的控制器。

控制器工作是从具体现实转换为抽象模型。在这种情况下,控制器将处理连接到远程服务器,扫描文件夹,然后将该信息转换为它将传递给数据模型的抽象表单。但是,控制器不保存数据,也不了解这些数据如何相互关联。

对于同步应用程序,数据模型的工作是了解哪些文件在哪个文件夹中以及哪些文件需要复制或更新以及在哪里。然后它会告诉每个控制器要操作哪些文件。但是,控制器不知道为什么每个文件都被操作。

设计目标是创建一个数据模型,该模型可以对文件夹和文件进行建模,无论它们驻留在何处,如何进行具体操作,甚至根本不存在。这样,您只需添加或删除控制器即可轻松添加或删除界面。控制器本身很简单,因为它们没有数据,也没有数据操作逻辑。