2011-10-12 61 views
0

想,作为一个iPhone应用程序的一部分,我需要显示用户的某些部分对象的列表。在MVC,澄清对象的责任需要

模型

  • 表示实际的对象要显示
  • 愚笨数据,吸气剂的收集和setter

视图

  • 显示该列表,通行证接收动作至控制器
  • 表示层

的控制器

  • 解释从视图接收动作和发生在数据动作
  • 视图和数据之间算符

在这幅图中,将是控制者对人的责任ist模型到磁盘,还是它应该是Model逻辑的一部分?要求做到这一点将来自控制器,但是,如果控制器知道如何将数据保存到磁盘,或者数据是否知道如何将自己保存到磁盘?

回答

1

这是不对的。

模型负责所有的业务逻辑。此外,型号不直接了解数据库或任何其他数据存储介质。当模型初始化时,它接收工厂创建的DAO或DataMapper,它们负责存储和检索信息。

控制器解释从视图中接收到的信息,并改变模型和视图的状态。

视图通过观察者模式(经典MVC)或模型(Model2 MVC)的请求数据从持久模型接收信息。

1

我可以看到这是怎么回事两种方式。我会认为这种逻辑通过这种方式进入模型,控制器更清洁一些。此外,如果您使用的模型之间的此功能,它主要是一致的e.g $person->saveData()$user->saveData()那么你可以地延长了基础模型,因此会被其他车型继承和保存你重复的代码。

如果将此逻辑并入模型中,将其设置为足够灵活以便控制器可以覆盖持久数据可能是个好主意。因此,也许,将参数传递到模型功能$person->save(false)false将防止模型持久化数据,但在默认情况下会true