我刚读了一篇博客文章,用银行类比解释了MVC。我有几个月使用MVC框架(CakePHP)进行Web应用程序开发的经验,所以我理解基本概念,但我开始看到一个主题,让我觉得我在处理我的逻辑时采取了有缺陷的方法:
- 模型要肥,控制器要瘦
- 尽可能将业务逻辑放在模型中
在我的应用程序中,模型很苗条,控制器很肥胖。我把所有业务逻辑都放在控制器中,除了关联和验证规则之外,模型里什么也没有。
浏览我的控制器,现在我可以确定很多逻辑应该放在模型中:
- 应用程序有列表,其中包含项目,并且项目可以排名。将列表放入排名顺序的排序逻辑位于控制器中。
- 同样,项目(Item 模型)也有图像(Image 模型)。每个项目可能有一个默认图像(在items表中由image_id指定)。当显示带有其图像的项目时,默认图像应首先出现。我在控制器中编写了此逻辑。
- 显示列表时,相关列表会在侧边栏中显示。确定相关列表的逻辑位于控制器中。
现在是我的问题:
- 根据我上面提供的例子,我是否正确地认为这些是当前在控制器中的逻辑实例,应该放在模型中?
- 还有哪些与Web应用程序常见的逻辑领域应该放在模型中?
- 我确定识别这个问题并改变我的设计模式是解决问题的一半,但即使我决定将上述示例中的逻辑移动到模型中,我也不知道从何开始。 有人可以通过在此处发布一些代码或链接到一些好的学习资源来指引我吗? CakePHP特定的帮助很棒,但我相信任何MVC都足够。