上文(设计模式-访问者模式):https://blog.csdn.net/qq_16498553/article/details/106912484
目录
背景
MVC模式模式是什么?
角色:
优点:
缺点:
MVC模式可以干嘛?
MVC模式类图
实现代码
源码下载:https://gitee.com/hong99/design-model/issues/I1IMES
结果
源码下载:https://gitee.com/hong99/design-model/issues/I1IMES
最后
记得当前通过serverlet来写jsp页面的时候有些代码还是通过后面直接写到页面来的,好恶心,什么东西都是通过后面来写的,包括静态代码,并且维护极其费时费力,真是辛酸岁月,好在后面mvc很好解决了该问题。
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
Model(模型):主要负责数据库操作,以及相关业务逻辑的实现,为视图层展示提供数据。
View(视图):主要负责系统与用户交互,以及数据的渲染;
Controller(控制器):用户请求的入口,接收和返回对应的数据模型。
结构清晰、方便维护:由于mvc各层有各层的职责所以很方便管理和维护,并且代码复用率也很高;
低耦合:各层之间互相分离,职责不同。
mvc由于分层明确,实现起来相关的数据流流转比较复杂。
mvc主要是对java封装、继承、多态一种非常好的呈现,减少维护成本、各层职责清晰,并且管理方便,主要解决的问题将原来所有的逻辑都放到统一一个层级中,解耦成mvc三层各层分工明确。
个人理解:
mvc,比如我们手机看到的一些新闻,所看到的是视图层(view),而你所请求的网页地址就是入口(controller),通过后台模型层(model)返回了新闻信息。
/**
* @Auther: csh
* @Date: 2020/6/23 14:58
* @Description: 视图层(view)
*/
public class NewsView {
public void viewNews(NewsModel model){
System.out.println("新闻标题:"+model.getTitle());
System.out.println("新闻内容:"+model.getText());
}
}
/**
* @Auther: csh
* @Date: 2020/6/23 14:53
* @Description:新闻信息 模型层
*/
public class NewsModel implements Serializable {
private String title;
private String text;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public NewsModel(String title, String text) {
this.title = title;
this.text = text;
}
}
/**
* @Auther: csh
* @Date: 2020/6/23 15:01
* @Description: 控制器(controller)
*/
public class ViewController {
private NewsModel model;
private NewsView view;
public ViewController(NewsModel model, NewsView view) {
this.model = model;
this.view = view;
}
public void viewNews(){
view.viewNews(model);
}
}
/**
* @Auther: csh
* @Date: 2020/6/23 15:02
* @Description: mvc 用户查看新闻
*/
public class Client {
public static void main(String[] args) {
NewsModel newsModel = new NewsModel("中央新闻","12456497894");
NewsModel newsMode2 = new NewsModel("中央新闻2","12456497894");
NewsView newsView = new NewsView();
NewsView newsView2 = new NewsView();
ViewController viewController = new ViewController(newsModel,newsView);
viewController.viewNews();
ViewController viewController2 = new ViewController(newsMode2,newsView2);
viewController2.viewNews();
}
}
新闻标题:中央新闻
新闻内容:12456497894
新闻标题:中央新闻2
新闻内容:12456497894
mvc设计模式和mvc框架是不同的,这个需要各位注意下,因为mvc设计模式只是一种思想,而mvc框架里面不单单用了这种思想,而在这种思想基础上去搭建框架。spring mvc 、structs都是mvc的设计思想衍生而来。mvc在真正工作中大部都是以该模式呈现,比如上面说的spring mvc、spring boot 、spring cloud等。
参考文章:
https://mp.weixin.qq.com/s/GuO5wdo2rJgvHH6mErLgqw