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项目的脚手架啦。

目录
相关文章
|
5月前
|
设计模式 存储 前端开发
MVVM、MVC、MVP三种常见软件架构设计模式的区别
MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
113 12
|
3月前
|
设计模式 前端开发 数据库
哇塞!Rails 的 MVC 架构也太牛了吧!快来看看这令人惊叹的编程魔法,开启新世界大门!
【8月更文挑战第31天】《Rails中的MVC架构解析》介绍了Ruby on Rails框架核心的MVC设计模式,通过模型(Model)、视图(View)和控制器(Controller)三部分分离应用逻辑,利用Active Record进行数据库操作,ERB模板渲染视图,以及控制器处理用户请求与业务逻辑,使代码更易维护和扩展,提升团队开发效率。
65 0
|
4月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
66 0
|
2月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
63 18
|
2月前
|
设计模式 前端开发 数据库
理解mvc架构
mvc架构
23 4
|
3月前
|
设计模式 存储 前端开发
MVC革命:如何用一个设计模式重塑你的应用架构,让代码重构变得戏剧性地简单!
【8月更文挑战第22天】自定义MVC(Model-View-Controller)设计模式将应用分为模型、视图和控制器三个核心组件,实现关注点分离,提升代码可维护性和扩展性。模型管理数据和业务逻辑,视图负责数据显示与用户交互,控制器处理用户输入并协调模型与视图。通过示例代码展示了基本的MVC框架实现,可根据需求扩展定制。MVC模式灵活性强,支持单元测试与多人协作,但需注意避免控制器过度复杂化。
39 1
|
2月前
x86体系架构学习
x86体系架构学习
|
3月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
45 0
|
3月前
|
存储 前端开发 数据库
神秘编程世界惊现强大架构!Web2py 的 MVC 究竟隐藏着怎样的神奇魔力?带你探索实际应用之谜!
【8月更文挑战第31天】在现代 Web 开发中,MVC(Model-View-Controller)架构被广泛应用,将应用程序分为模型、视图和控制器三个部分,有助于提高代码的可维护性、可扩展性和可测试性。Web2py 是一个采用 MVC 架构的 Python Web 框架,其中模型处理数据和业务逻辑,视图负责呈现数据给用户,控制器则协调模型和视图之间的交互。
35 0
|
3月前
|
机器学习/深度学习 算法 网络架构
神经网络架构殊途同归?ICML 2024论文:模型不同,但学习内容相同
【8月更文挑战第3天】《神经语言模型的缩放定律》由OpenAI研究人员完成并在ICML 2024发表。研究揭示了模型性能与大小、数据集及计算资源间的幂律关系,表明增大任一资源均可预测地提升性能。此外,论文指出模型宽度与深度对性能影响较小,较大模型在更多数据上训练能更好泛化,且能高效利用计算资源。研究提供了训练策略建议,对于神经语言模型优化意义重大,但也存在局限性,需进一步探索。论文链接:[https://arxiv.org/abs/2001.08361]。
42 1

热门文章

最新文章