欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

大家对WEB开发的MVC的理解吧?

程序员文章站 2022-04-22 10:08:31
...
YII中的Action层,除了解耦动作,使代码复用,在MVC中充当的是哪一块的角色?

回复内容:

YII中的Action层,除了解耦动作,使代码复用,在MVC中充当的是哪一块的角色?

没有用过YII,但是MVC基本上都是那个路子。action应该是控制器吧,一般来说控制器最好是做请求的分发和输出,最好不要在action中做任何处理。可以这么理解,一个项目就是一个餐厅,action是服务员,他的工作就是接收客人的要求,然后传达给厨师,厨师做好菜,服务员再端回来给客人,就这么多。但是这里面会涉及问题,比如说客人点的是炖菜,服务员应该去告诉做炖菜的厨师A,客人要甜点,服务员应该去通知糕点师B。要是餐厅的菜品一多,服务员就不得不记住很多对应关系,也就是说传达请求的逻辑很复杂。要是服务员生病请假了,临时找个人来替代是很难的,因为这个活很复杂,这就对应我们对代码里修改或者加功能一样。要是我们的action写得很复杂,改代码是非常痛苦的,甚至很可能为了加一点新的小功能导致整个程序编译失败。

所以现在的大餐厅,服务员基本上都是用一个机器给生成订单,然后由机器来通知各个厨师。这样的好处就是,服务员的工作就变得很简单了,要找个新的服务员也非常容易。这个行为对应在MVC的架构里面也是非常常用的,叫做委托。就是说,action收到请求,只需要做一个简单的处理,然后委托给一个专门的model来进行更进一步的请求分发和过滤,由这个model再去调真正的处理程序。这个被委托来做分发的model是属于M层的。

我们的许多设计模式也是使用在M层,比如做分发的model实现一个工厂模式或者策略模式等等,这些都是在M层的处理,action是C层的,尽量让action保持简洁。类比来说,尽量让服务员少管业务,更多的精力放在给顾客的服务上,action更注重的就是做好用户的接口。

Controller呗。

大家对WEB开发的MVC的理解吧?

http://segmentfault.com/blog/trigkit4/1190000002386651

action方法是一个个动作,属于控制器;
Yii框架用的很标准的MVC模型,action所属的类都继承自Controller:

class TracerController extends Controller
{
    public function actionIndex()
    {
        $this->render('index');
    }
}

楼主请百度:yii权威指南 pdf
很薄的一本册子,将MVC讲的很清楚;