您的位置:首页 > 其它

MVC,MVP,MVVM的区别和联系

2017-06-08 21:01 288 查看
     近日参与到公司架构的重搭建,真是意识到了一个项目的架构是多么的重要。一个项目越做越复杂只能说明架构师无能。

    我是查看的 阮一峰老师的网站和掘金作者悟空的一篇文章。豁然开朗。写一下自己的理解,勉勉强强算是一篇原创文章吧。贴图全部来自上述两者文章内。

1,MVC,MVP,MVVM的名词解释。

      M,model(模型),数据保存。

      V,view(视图),用户界面。

      C,control(控制器),业务逻辑。

      P,presenter,我也不知道该翻译成什么,就音译成主持吧,它是一个联系业务和逻辑的层。在mvp模式里面占据最重要的地位。

     VM,viewModel,其实效果和control还有presenter一样。

2,详细解释。

(1)MVC。

         三个模块的通信方式是单向的,view层发送指令给control,control通过逻辑代码控制model层改变状态。model状态改变后将数据返回个view层。

  但是在实际的应用中。往往是更加灵活的。view层可接受用户指令,control也可以接受用户指令作为一个事件的开始。

还有一个用法我不是很理解,例如backbone.js。他也是MVC的模式,但是用户可以通过view发送指令后直接改变model状态。用户也能直接从control发送指令,再由control发送个view。

(2)MVP。

        MVP模式相对于MVC,改变了通信方向。各个部分的通信都是双向的,但是model和view层并没有通道,全部都是通过presenter来完成的。view模块不部署任何逻辑,没有主动性,被称为被动视图。

(3)MVVM

     MVVM的三个模块的通信方式与MVP相似。唯一的区别是它的VM和View模块是双向绑定。view的变动是实时的映射在vm模块上。Angular和Ember都是这种模式。

  后续还会继续更细。

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: