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