模型 class 是否应该包含加载其类型的所有 objects 的方法?

Should model class contain method for loading all objects of its type?

这个问题与体系结构更相关,但我将讨论 "in" 一种具体的编程语言 - objective c - 因为这种语言还使用 class 方法,而不仅仅是实例方法(我不确定它在其他语言中的表现如何)。另外,我正在使用 MVC 设计模式。

所以,让我们有一个模型 class 文章。此 class 将具有 标题、说明、文本 等属性...只是基本内容。现在,我想从 HTTP API 加载很多文章。我是否应该在 class 方法中的文章 class 中执行此操作,例如 +(void)loadAllArticlesWithBlock:...(当然,它会为此使用一些 HTTP 管理器 class,这不是这里的重点) , 或者模型 class 应该只包含与单个文章相关的东西并且应该让控制器加载所有文章?

我认为这是两个不同的问题:

  • 应该 Article class 服务器作为 Article 对象的 factory,并且
  • 工厂应该Article放在模型中还是放在MVC的控制器中

第一个问题的答案是"probably not":您最好为文章工厂定义一个协议,然后针对该协议进行编程。通过 HTTP API 提供文章的实现将在运行时插入以供生产使用。这开启了提供不同工厂进行测试的可能性 - 例如,从文件加载文章的工厂。

第二个问题的答案是承载工厂方法的对象应该附加到模型,而该对象的所有使用都将来自控制器。