前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式-MVC模式

设计模式-MVC模式

作者头像
逍遥壮士
发布2020-09-18 11:29:15
5070
发布2020-09-18 11:29:15
举报
文章被收录于专栏:技术趋势技术趋势

背景

记得当前通过serverlet来写jsp页面的时候有些代码还是通过后面直接写到页面来的,好恶心,什么东西都是通过后面来写的,包括静态代码,并且维护极其费时费力,真是辛酸岁月,好在后面mvc很好解决了该问题。

MVC模式是什么?

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

角色:

Model(模型):主要负责数据库操作,以及相关业务逻辑的实现,为视图层展示提供数据。

View(视图):主要负责系统与用户交互,以及数据的渲染;

Controller(控制器):用户请求的入口,接收和返回对应的数据模型。

优点:

结构清晰、方便维护:由于mvc各层有各层的职责所以很方便管理和维护,并且代码复用率也很高;

低耦合:各层之间互相分离,职责不同。

缺点:

mvc由于分层明确,实现起来相关的数据流转比较复杂。

MVC模式可以干嘛?

mvc主要是对java封装、继承、多态一种非常好的呈现,减少维护成本、各层职责清晰,并且管理方便,主要解决的问题将原来所有的逻辑都放到统一一个层级中,解耦成mvc三层各层分工明确。

个人理解:

mvc,比如我们手机看到的一些新闻,所看到的是视图层(view),而你所请求的网页地址就是入口(controller),通过后台模型层(model)返回了新闻信息。

MVC模式类图

源码下载:https://gitee.com/hong99/design-model/issues/I1IMES

实现代码

代码语言:javascript
复制
/**
 * @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;
    }
}
代码语言:javascript
复制
/**
 * @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());
    }
}
代码语言:javascript
复制
/**
 * @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);
    }
}
代码语言:javascript
复制
/**
 * @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();
    }
}

结果

代码语言:javascript
复制
新闻标题:中央新闻
新闻内容:12456497894
新闻标题:中央新闻2
新闻内容:12456497894

源码下载:https://gitee.com/hong99/design-model/issues/I1IMES

最后

mvc设计模式和mvc框架是不同的,这个需要各位注意下,因为mvc设计模式只是一种思想,而mvc框架里面不单单用了这种思想,而在这种思想基础上去搭建框架。spring mvc 、structs都是mvc的设计思想衍生而来。mvc在真正工作中大部都是以该模式呈现,比如上面说的spring mvc、spring boot 、spring cloud等。

参考文章:

https://mp.weixin.qq.com/s/GuO5wdo2rJgvHH6mErLgqw

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术趋势 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源码下载:https://gitee.com/hong99/design-model/issues/I1IMES
  • 实现代码
  • 源码下载:https://gitee.com/hong99/design-model/issues/I1IMES
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档