设计模式-MVC模式

上文(设计模式-访问者模式):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模式模式是什么?

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

角色:

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

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

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

优点:

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

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

缺点:

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

MVC模式可以干嘛?

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

个人理解:

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

MVC模式类图

设计模式-MVC模式_第1张图片

 

实现代码

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

/**
 * @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

源码下载: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

你可能感兴趣的:(设计模式)