为什么要提倡thin controller & fat model的架构? [ 求助交流 ]
这有什么好处?我看到的理由如下: 1.方便测试 2.方便复用
我没做过WEB应用的单元测试,所以第一点我不评论 但关于第二点我是有不同意见的,至少在YII上controller层还是胖点好. 因为在我的开发经验中两个不同的controller之间并没有多少需要复用逻辑的地方,而且很多所谓需要复用的逻辑其实很多时候是有细微差别的,并不能完全拿来复用.况且YII还有ACTION类,实在有复用的情况可以抽出来做一个独立的action嘛
共 3 条回复
-
bubifengyun 回复于 2015-10-31 14:19 举报我是感觉model厚重些好,controller就可以精悍些。这样controller里的各个action方法就可以减少重复代码。这是我用过的。
你说的两个不同controller之间的代码复用我没有遇到。
不知道是不是这个意思。
RichardTian 觉得很赞 -

按照正统思想, 你这会背扣上
不和章法的帽子其实也无所谓了 看你心情咯
controller势力范围内体现的是业务逻辑,因此 要尽量精简, 最好懒一点, 指哪儿打哪儿, 只会吆喝是最棒的了... 丫就是个颐指气使的指挥官
任务的具体实现, 是不糅杂业务逻辑在内的. 这些最好在
model领域完成合理的分割 设计尤为重要.. 各种大多设计模式恐怕是在这个战场上被探索总结出来的...
目的也很明确, 无外乎最大化复用, 今后维护轻松一点 读起来赏心悦目一些.....
and so on...请注意 我说的都是
controller势力范围model领域....说到底, 是一个概念吧, 代表一种思想吧, 亦或是几个高逼格词而已 但绝逼不是一个类似文件什么的玩意儿
RichardTian , 杨淇 觉得很赞 -

router 路由:是交通体系里的道标、路牌,用于指引方向。model 模型:是某一种交通规则,涵盖了这个情景下的各种约束与方案,不可被具体触摸的规则。views 视图:是道路、桥、高架、隧道、高速公路,是一切和你息息相关,可以被你感知和触摸到的很具体的物体。controller 控制器:是驱动力,驾驶员做出抉择,交通工具负责执行,交警负责裁决。他是链接有形与无形之间的纽带。以上是我举的一个例子,这套体系的目的是为了达成快速、高效、安全的交通体系,在程序中亦然。我们不可能为每条道路制定各种规则,因为绝大部分道路的交通规则都是重复的,那样造路的人要累死。所以需要model来进行统一控制,当有规则改变时只需要在model里与view里调整即可,其他地方几乎不需要改变(类似与交通部发个文件说长假高速免费,然后高速公路上竖个牌子告知一样。)
那么想想,如果你把过多的事情放在了controller里处理,产生最大的问题就是效率,因为驾驶员、交通工具、交警之间的关系变复杂了,必然导致效率变低了,而且可能出现每个交警执法过程中标准不统一的问题。
所以在控制器里做大量的工作可能本末倒置了。
tying , RichardTian 觉得很赞
yiissy001
最后登录:2017-09-25
在线时长:24小时55分
- 粉丝7
- 金钱2529
- 威望90
- 积分3669