Model view controller 胖模型、瘦控制器和MVC设计模式
我刚刚读了一篇文章,用银行业的类比来解释MVC。我有几个月使用MVC框架(CakePHP)开发web应用程序的经验,因此我掌握了基本知识,但我开始看到一个主题,这让我觉得我在使用有缺陷的方法来实现我的逻辑:Model view controller 胖模型、瘦控制器和MVC设计模式,model-view-controller,cakephp,model,controller,Model View Controller,Cakephp,Model,Controller,我刚刚读了一篇文章,用银行业的类比来解释MVC。我有几个月使用MVC框架(CakePHP)开发web应用程序的经验,因此我掌握了基本知识,但我开始看到一个主题,这让我觉得我在使用有缺陷的方法来实现我的逻辑: 胖模特,瘦控制器 在模型中保留尽可能多的业务逻辑 在我的应用程序中,模特们有厌食症,而管制员则肥胖。我在控制器中有所有的业务逻辑,在模型中除了关联和验证规则之外什么都没有 通过浏览我的控制器,我现在可以识别模型中可能包含的许多逻辑: 该应用程序具有包含项目的列表,并且可以对项目进行排名
- 胖模特,瘦控制器
- 在模型中保留尽可能多的业务逻辑
- 该应用程序具有包含项目的列表,并且可以对项目进行排名。将列表按顺序排列的排序逻辑位于控制器中
- 类似地,项目(项目模型)也有图像(图像模型)。每个项目可能有一个默认图像(由项目表中的图像标识指定)。当项目与其图像一起显示时,应首先显示默认图像。我在控制器中有这样做的逻辑
- 显示列表时,相关列表将显示在侧栏中。确定哪些列表相关的逻辑在控制器中
我至少使用这两个“测试”来检查我的逻辑是否正确: 1) 如果我编写一个单元测试,很容易只创建一个“真实”对象来进行测试(=您在生产中使用的对象),而不包括很多其他对象,除了一些值对象。需要一个实际的模型对象和一个实际的控制器对象来进行测试可能是您需要移动功能的一个信号 2) 问自己这样一个问题:如果我添加了另一种使用这些类的方法,我是否需要以一种近乎复制粘贴的方式复制功能。。。这可能也是移动该功能的一个很好的理由
同样有趣的是:要给你“正确”的答案有点困难,因为其中一些答案涉及到框架的细节(不管你正在使用哪些框架) 至少在CakePHP方面:
博客作者写获奖答案FTW!以前都听说过:)