我刚刚阅读了一篇博客文章,该文章用银行类比解释了 MVC。我有几个月的使用 MVC 框架(CakePHP)开发 Web 应用程序的经验,所以我掌握了基础知识,但我开始看到一个主题,让我认为我在放置逻辑的地方采用了一种有缺陷的方法:
- 胖模型,瘦控制器
- 在模型中保留尽可能多的业务逻辑
在我的应用程序中,模型患有厌食症,而控制器则肥胖。我在控制器中有所有业务逻辑,除了模型中的关联和验证规则之外什么都没有。
扫描我的控制器,我现在可以识别出很多应该包含在模型中的逻辑:
- 该应用程序具有包含项目的列表,并且可以对项目进行排名。将列表按排名顺序排列的排序逻辑位于控制器中。
- 同样,物品(Item model)也有图像(Image model)。每个项目可能有一个默认图像(由项目表中的 image_id 指定)。当一个项目与它的图像一起显示时,默认图像应该首先出现。我有在控制器中执行此操作的逻辑。
- 显示列表时,侧栏中会显示相关列表。确定哪些列表相关的逻辑在控制器中。
现在我的问题:
- 通过上面给出的示例,我认为这些是当前属于模型的控制器中的逻辑实例,我是否走在正确的轨道上?
- Web 应用程序共有的其他一些逻辑领域应该纳入模型中吗?
- 我确信发现这个问题并改变我的设计模式是成功的一半,但即使我决定采用上面给出的那些例子并尝试将这种逻辑转移到模型中,我也不知道从哪里开始。任何人都可以通过在此处发布一些代码或链接到一些好的学习资源来为我指明正确的方向吗?CakePHP 的特定帮助会很棒,但我确信任何 MVC 都足够了。