MVC模式中的Model的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC模式中的Model的理解相关的知识,希望对你有一定的参考价值。

页面就是视图,他需要哪些数据以及哪些操作,他就命令Control去执行;而Model就是实体类,Control负责返回给View这些实体类对象或者List<实体类>对象。我当前对MVC的理解就是这样的,不知道对不对,请大家指正。

MVC(Model/View/Controller)模式是国外用得比较多的一种设计模式,好象最早是在Smaltalk中出现。MVC包括三类对象。Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。
1、模型(Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

2、视图(View)

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3、控制器(controller)

控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性

早期的程序中,如果不注意对数功能和显示的解耦合,常常会导致程序的复杂及难以维护。很多VB,Delphi等RAD程序都有这种问题。甚至现在的C#,Java有时候也会出现把业务逻辑写在显示模块中的现象

管MVC设计模式很早就提出,但在Web项目的开发中引入MVC却是步履维艰。主要原因:一是在早期的Web项目的开发中,程序语言和html的分离一直难以实现。CGI程序以字符串输出的形式动态地生成HTML内容。后来随着脚本语言的出现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在HTML内容中。这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离。二是脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础。直到基于J2EE的JSP Model 2问世时才得以改观。它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能

JSP Model 1 与 JSP Model 2

SUN在JSP出现早期制定了两种规范,称为Model1和Model2。虽然Model2在一定程度上实现了MVC,但是它的应用用并不尽如人意

JSP Model 1

JSP Model 2

model2 容易使系统出现多个Controller,并且对页面导航的处理比较复杂

有些人觉得model2仍不够好,于是Craig R. McClanahan 2000年5月提交了一个WEB framework给Java Community.这就是后来的Struts.

2001年7月,Struts1.0,正式发布。该项目也成为了Apache Jakarta的子项目之一

Struts 质上就是在Model2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑
参考技术A

简单点说,model 你看把它看成表,view 请求数据,contorller 来执行,选择视图返回去,执行返回状态,告诉你view,model 在把数剧返回去,我简单的理解

本回答被提问者采纳
参考技术B model是对象的载体,作用是比如在控制层把数据传到试图层model就好像是小车通过这个载体传输对象 参考技术C model是对象...不一定所谓的纯数据实体
也有些是页面实体 或者是Linq的datacontent
也会包括封装datacontent的类
也可以是页面实体 比如一个数据实体 在页面某个字段表现为一个DropDownList
可以自定一个页面实体 带有DropDownList 和 其他数据
Control 可以返回ActionResult类型的参数 可以是View 可以是一个重定向到另一个Action
可以返回Json数据 甚至于返回文本content 还有可以返回空 但是内部有responce.write
mvc 很好玩的~ 慢慢摸索吧~

关于vue项目中mvvm模式的理解

欲谈mvvm 必谈mvp,欲谈mvp 必谈mvc

 

mvc模式:view监听model,controller监听view并改变model,model被改变触发view的改变

mvc的两个问题:

  1:view与model高度耦合

  2:controller太重

 

mvp模式:MVP的目的在于隔离model和view,view复杂界面的展示逻辑,model负责数据的处理逻辑,Presenter复杂整合view层和model层

//model层
function userModel(data){
  this.name = data.name;
  this.avatar = data.avatar;
}
function getUserData(){
  return fetch("http://test.com/getUSer")
  .then(function(response){
    var userData = response.data;
    return new userModel(userData)
  })
}
//Presenter层
function userPresenter(){
  var userData = getUserData();//网络请求获取用户数据
  userData.then(function(userData){
    new userView().showUserMes(user);
  })
}
//view层
function userView(){

}
userView.prototype.showUserMes = function(userData){
  document.getElementByID("username").value = userData.name;
  document.getElementByID("useravatar").value = userData.avatar;
}

如图在view层编写基本的视图逻辑,而数据层编写基本的数据请求,在presenter层复杂将两者整合起来,这样达到了view与model分离的目的,同时将业务逻辑中视图方面的逻辑放入到view层

mvvm模式:mvvm模式主要是在于v-vm和v-p的改变,mvvm的双向数据绑定优化了v-p模式下关于view层与presenter层的交互。其他地方则与mvp无异,

以上是关于MVC模式中的Model的理解的主要内容,如果未能解决你的问题,请参考以下文章

对MVC模式的理解是啥?

ASP.NET中MVC的理解

iOS中的MVC设计模式

关于vue项目中mvvm模式的理解

MVC,MVVM模式的理解

asp.net core 中的 MVC 架构模式