前端软件架构之MVC、MVP、MVVM

一、MVC

1.1 MVC简化模型

MVC是模型(Model)-视图(view)-控制器(Controller)的缩写,是设计模式中最常用的软件架构

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

各部分之间的通信方式如下:

  • View 传送指令到 Controller
  • Controller 完成业务逻辑后,要求 Model 改变状态
  • Model 将新的数据发送到 View,用户得到反馈

所有通信都是单向的。

1.2 MVC互动模式

接受用户指令时,MVC 可以分成两种方式。一种是通过 View 接受指令,传递给 Controller。

另一种是直接通过controller接受指令。

 

1.3 MVC代码模型

 1 //页面加载后创建MVC对象
 2 $(function(){
 3     //创建MVC对象
 4     var MVC=MVC||{};
 5     //初始化MVC数据模型层
 6     MVC.model=function(){}();
 7     //初始化MVC视图层
 8     MVC.view=function(){}();
 9     //初始化MVC控制器层
10     MVC.controller=function(){}();
11 });

 

1.3.1MVC数据模型层

 1 //MVC数据模型层
 2 MVC.model=function(){
 3     //内部数据对象
 4     var M={};
 5     //服务器端获取数据,通常通过Ajax获取并存储
 6     M.data={};
 7     //配置数据
 8     M.config={};
 9     return {
10         //获取服务器端数据
11         getData:function(m){
12             return M.data[m];
13         },
14         //获取配置数据
15         getConfig:function(c){
16             //根据数据字段获取数据
17             return M.config[c]
18         },
19         //设置服务器数据
20         setData:function(m,v){
21             M.data[m]=v;
22             return this;
23         },
24         //设置配置数据
25         setConfig:function(c,v){
26             M.data[c]=v;
27             return this;
28         }
29     };
30 }();

 

1.3.2MVC视图层

 1 //MVC视图层
 2 MVC.view=function(){
 3     //模型数据层对象操作方法引用
 4     var M=MVC.model;
 5     //内部视图创建方法对象
 6     var V={};
 7     //获取视图的接口方法
 8     return function(v){
 9         //根据视图名词返回视图
10         V[v]();
11     }
12 }();

 

1.3.3MVC控制器层

1 //MVC控制器层
2 MVC.controller=function(){
3     //模型数据层对象操作方法引用
4     var M=MVC.model;
5     //视图数据层对象操作方法引用
6     var V=MVC.view;
7     //控制器创建方法对象
8     var C={};
9 }();

 

二、MVP

MVP是Model-View-主持(Presenter),即将MVC中的控制器Controller换成了Presenter负责逻辑的处理。

MVC和MVP的区别是:

在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。

各部分之间都是双向通信:

  • View 接收用户交互请求
  • View 将请求转交给 Presenter
  • Presenter 操作Model进行数据更新
  • Model 通知Presenter数据发生变化
  • Presenter 更新View数据

  • 各部分之间的通信,都是双向的。
  • View 与 Model 不发生联系,都通过 Presenter 传递。
  • View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

三、MVVM

MVVM是Model-View-ViewModel,和MVP的区别在于Presenter换成了ViewModel负责逻辑处理。

MVVM的优点是低耦合、可重用性、独立开发。

双向绑定(data-binding):

  • View 接收用户交互请求
  • View 将请求转交给ViewModel
  • ViewModel 操作Model数据更新
  • Model 更新完数据,通知ViewModel数据发生变化
  • ViewModel 更新View数据

 

转载于:https://www.cnblogs.com/yankfy/p/qdrjjg.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值