MVC架构学习归纳总结(小傅哥の码场 学习专栏)

简介: MVC架构学习归纳总结(小傅哥の码场 学习专栏)

分层架构


       对于一个玩具项目来说,基于servlet开发的前后端系统,后端可以提供一个接口,然后所以的逻辑其实都可以在这个接口里实现,最终这个接口实现的方法就会有几十行上百行甚至更多。但是实际上这并不符合真正的设计规范。在实际的开发项目中,由于需求之间可能会有复用,以及解耦的考虑,那么就该使用出色的结构思想去设计项目基本的脚手架。


       比如说一个类所需的内容很多,如一系列的属性,一堆的方法实现,一堆的接口,那么其实就需要合理的把这些内容分配到不同的层次去实现,因此就有了分层架构的思想。


编程三步


如果想将不同的内容划分到不同的层次中,那么就应该将不同的内容划分出来。如图所示,其实就包含了一个玩具项目的基本所需了,如定义属性中,前端访问后端的接口,可能会传递过来很多参数,如最简单的登陆接口,需要username和password,那么就应该存在这样一个user对象,也就是请求对象,也是实体对象。当然也有请求对象与实体对象不一致的情况。同样的,如果返回的内容很多,那么也应该封装成一个对象。


       在业务中,可能也需要组合不同的实体类当做一个业务对象。


       以及对系统中一直固定常用值做枚举类,省得万一修改还需要全局到处去修改。


       而创建方法中,实际上是要将对应业务方法封装抽离出来,最常见的就是数据库操作方法和业务逻辑方法。


       最后在调用展示中,其实利用定义属性和创建方法里面封装好的内容,完成整个接口请求以及接口响应。


分层架构


   MVC架构之所以叫MVC,是因为其主要包括三个部分,M model对象层,都封装到了domain里面;V view展示层,但是目前项目基本上都是前后端分离的项目,所以基本上都快放弃了以前JSP的写法;C controller 控制层,对外提供实现类。


       其实吧就是将编程三步中所涉及到 都分配到MVC的各个层次中去。这样分层过后,就可以很清晰的知道各个层次都在做什么内容,利于后续管理的维护和迭代。


       对于一个真正的项目来说,是没有一锤子买卖的,最开始的开发远不是成本所在。最大的开发成本是后期的维护和迭代。而架构设计的意义更多的是解决系统反复的维护和迭代时,如何降低成本,这也是架构分层的意思所在。


调用流程


首先发起接口请求,Controller收到请求后,调用Service层的业务方法,然后Service调用Dao层的业务方法。当执行完成后,逐层的返回Controller中封装数据,然后以响应对象的方式 进行接口响应。


架构树形结构


└─src
    ├─main
    │  ├─java
    │  │  └─cn
    │  │      └─potato
    │  │          └─mvc
    │  │              ├─common
    │  │              │      Contants.java
    │  │              │      Result.java
    │  │              │
    │  │              ├─controller
    │  │              │      TestController.java
    │  │              │
    │  │              ├─dao
    │  │              │  │  ITestDao.java
    │  │              │  │
    │  │              │  └─impl
    │  │              │          TestDaoImpl.java
    │  │              │
    │  │              ├─domain
    │  │              │  ├─po
    │  │              │  │      Test.java
    │  │              │  │
    │  │              │  ├─req
    │  │              │  │      TestReq.java
    │  │              │  │
    │  │              │  └─res
    │  │              │          TestRes.java
    │  │              │
    │  │              └─service
    │  │                  │  ITestService.java
    │  │                  │
    │  │                  └─impl
    │  │                          TestServiceImpl.java
    │  │
    │  └─resources
    │      │  application.yml
    │      │
    │      └─mybatis
    │          └─mapper
    │                  TestMapper.xml
    └─test
        └─java
            └─cn
                └─potato
                    └─mvc
                            Test.java

由于我使用的机器上配置过WSL2,所以 可以在项目根目录中直接使用 tree -f命令获取到项目的树结构,没有配置过的可以参考这篇文章你还在为买不起云服务器而烦恼吗?(本地化部署windows解决方案,适用于学生党的部署方案)-CSDN博客


以上就是一个mvc项目的脚手架啦。

目录
相关文章
|
3月前
|
存储 关系型数据库 数据库
个人学习ack-eci架构
针对无状态应用进行容器化改造,同时有应对高峰业务以及定时、批量计算任务对容器集群节点计算资源有高弹性低成本优化的需求的用户,利用云上资源的灵活性和规模化优势,构建云上高弹性、稳定、成本优化的服务。
34 0
|
3月前
|
设计模式 前端开发 数据库
从MVC到MVVC:软件架构的演变和迭代(二)
从MVC到MVVC:软件架构的演变和迭代
|
2月前
|
前端开发 Java fastjson
且谈软件架构(二) 模块化与MVC
且谈软件架构(二) 模块化与MVC
|
3天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
4天前
|
前端开发 Java PHP
信息系统架构模型(1) MVC
信息系统架构模型(1) MVC
11 0
|
1月前
|
设计模式 前端开发 数据处理
MVC架构中,控制器和模型之间是如何交互的
MVC架构中,控制器和模型之间是如何交互的
10 0
|
1月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
1月前
|
消息中间件 缓存 Java
SpringBoot的架构学习之路
SpringBoot的架构学习之路
|
2月前
|
网络协议 Java 容器
学习阿里云架构设计知识
学习阿里云架构设计知识
199 0