面向对象五大基本原则

graph LR
A(面向对象五大原则);B(单一职责原则);C(开放封闭原则);D(里式替换原则);E(依赖倒置原则);F(接口隔离原则);
A---B;A---C;A---D;A---E;A---F;
B-->b[一个类只负责一个明确的职责或功能];
C-->c[实体类对拓展开放,对修改封闭 拓展现有代码实现新功能,而非修改原有代码];
D-->d[子类对象能够替换父类对象,并且程序行为不会发生改变,要点:<ol><li>子类在继承父类时,必须实现父类中所有的抽象方法</li><li>子类在可以在实现父类的抽象方法时,增加自己的特殊行为,但不能修改父类的数显逻辑</li><li>子类的前置条件,如: 接收的参数 调用的方法等,不能比父类更加限制</li><li>子类的后置条件,如: 返回值 抛出的异常等,不能比父类更宽松</li><li>子类的方法不能抛出父类方法未声明的异常</li></ol>];
E-->e[依赖关系应该通过接口或抽象类来建立,不通过具体的实现类, 要点:<ol><li>高层模块应该定义一个抽象接口或抽象类,用于定义它所依赖的低层模块的行为</li><li>低层模块应该实现高层模块定义的抽象接口或抽象类,提供具体的实现</li><li>高层模块应该通过抽象接口或抽象类来依赖低层模块,而不是直接依赖具体的实现类</li></ol>]
F-->f[将庞大的接口拆分成更小的 更具体的接口 以避免接口过于臃肿和不必要的依赖关系,要点:<ol><li>接口应该只包含客户端需要的方法 不应该包含不相关或不必要的方法 一个接口应该具有单一责任 只负责一个特定的功能或行为</li><li>客户端只依赖所需要接口 而不依赖不需要接口</li><li>接口设计应该经过合理的考虑和分析 避免频繁变更和修改</li></ol>]

Spring Boot五层架构

flowchart LR
subgraph 五层架构
direction TB
A(Web层/表现层);B(Controller层);C(Service层);D(Mapper层/Dao层);F(数据库);
A<--Vo-->B;
B--Dto-->C;
C<--Po-->D;
D<--Pojo/entity-->F;
end
subgraph 各层作用
direction LR
A2(Web层/表现层)-->a(负责接收用户请求并展示处理结果,表现层通常由前端页面 前端控制器 和视图解析器等组成,与用户交互,接收用户输入,将请求传递给控制层处理,并将处理结果展示给用户);
B2(Controller层)-->b(负责接收表现层传递过来的请求,处理请求并调用服务层逻辑处理业务逻辑);
C2(Service层)-->c(负责处理业务逻辑和业务规则.服务层包含业务逻辑的具体实现,通常用来协调各个业务功能的调用,同时也可以包含事务管理等业务逻辑.);
D2(Mapper层/Dao层)-->d(负责与数据库进行交互,执行数据持久化操作.持久层包含数据访问对象Dao或仓储类Repository或Mapper类,用于执行数据库的CRUD操作.);
end
五层架构-->各层作用

关于Springboot理解的更多相关文章

  1. shiro+jwt+springboot理解

    转自 https://www.cnblogs.com/fengli9998/p/6676783.html https://www.jianshu.com/p/0366a1675bb6 https:// ...

  2. spring boot 小案例

    1. SpringBoot 1.1. 概要 在传统的SSM框架应用过程中,存在大量的配置文件,及相关的配置项,例如: 1. DispatcherServlet 2. CharacterEncoding ...

  3. Spring Boot 定制与优化内置的Tomcat容器

    1.Spring Boot定制与优化内置Tomcat容器. > 内置的容器有三个分别是Undertow.Jetty.Tomcat,Spring Boot 对这三个容器分别进行了实现,它们上层接口 ...

  4. Offer经验分享 - 蚂蚁金服、字节跳动、PDD、百度、华为、Paypal - Java社招面经

    年中的时候因为换工作的缘故,陆续参加了华为.蚂蚁.字节跳动.PDD.百度.Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer. 最近时间稍微宽裕点了,写个面 ...

  5. java基础知识面试总结-部分

    前言 在平时的工作学习中,自己对微服务和springboot基础理论知识关注比较少,在面试中对于面试官的问题,很多基本都不能够达到精准,全面:现将自己面试中的问题做以总结: 1.谈谈你对微服务架构的认 ...

  6. 深入理解Redis系列之SpringBoot集成Redis

    SpringBoot环境 快速搭建一个SpringBoot工程 进入 https://start.spring.io 网站, 使用该网站初始化一个SpringBoot工程 添加相关依赖 因为使用spr ...

  7. springBoot(1)---springboot初步理解

    springboot初步理解 在没有用SpringBoot之前,我们用spring和springMVC框架,但是你要做很多比如: (1)配置web.xml,加载spring和spring mvc 2) ...

  8. 基于SpringBoot的Environment源码理解实现分散配置

    前提 org.springframework.core.env.Environment是当前应用运行环境的公开接口,主要包括应用程序运行环境的两个关键方面:配置文件(profiles)和属性.Envi ...

  9. 5分钟理解 SpringBoot 响应式的核心-Reactor

    目录 一.前言 二. Mono 与 Flux 构造器 三. 流计算 1. 缓冲 2. 过滤/提取 3. 转换 4. 合并 5. 合流 6. 累积 四.异常处理 五.线程调度 小结 参考阅读 一.前言 ...

  10. Reactive(3)5分钟理解 SpringBoot 响应式的核心-Reactor

    目录 一.前言 二. Mono 与 Flux 构造器 三. 流计算 1. 缓冲 2. 过滤/提取 3. 转换 4. 合并 5. 合流 6. 累积 四.异常处理 五.线程调度 小结 参考阅读 一.前言 ...

随机推荐

  1. QQ、支付宝、微信收款码三合一

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` QQ.支付宝.微信收款码三合一 日期:2018-8-24 ...

  2. JavaScript:JS对象_Array

    <!DOCTYPE html><html>    <head>        <meta charset="utf-8">      ...

  3. C# 8字节byte数组转int

    对方是协议 对于整型.长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节):而 Little endian 则相反,它认为第一个 ...

  4. LangChain转换链:让数据处理更精准

    上篇文章<5分钟了解LangChain的路由链>里主要介绍了路由链,核心类是LLMRouterChain和MultiPromptChain.本文介绍LangChain里的另外1个重要的链: ...

  5. .NET使用CsvHelper快速读取和写入CSV文件

    前言 在日常开发中使用CSV文件进行数据导入和导出.数据交换是非常常见的需求,今天我们来讲讲在.NET中如何使用CsvHelper这个开源库快速实现CSV文件读取和写入. CsvHelper类库介绍 ...

  6. 基于 .net core 8.0 的 swagger 文档优化分享-根据命名空间分组显示

    前言 公司项目是是微服务项目,网关是手撸的一个.net core webapi 项目,使用 refit 封装了 20+ 服务 SDK,在网关中进行统一调用和聚合等处理,以及给前端提供 swagger ...

  7. Windows下git配合Unity要设置autocrlf=false

    Unity的.asset文件的换行符一定是Unix (LF)格式的,哪怕在设置里选了用Windows (CRLF)也没用,这个选项只对创建的C# Script有效. 这些Unix换行文件提交上去没问题 ...

  8. oeasy教您玩转vim - 63 - # window分屏

    ​ 窗口window 回忆上次 我们这次了解了缓冲区buffer ls可以查看buffer 如下是buffer缓冲的一些flag + 有修改未保存内容 - 可修改标签关闭 = 只读缓冲区 a 活跃缓冲 ...

  9. TIER 1: Responder

    TIER 1: Responder Active Directory Active Directory(AD)是由微软开发的目录服务,用于在网络环境中管理和组织用户.计算机.应用程序和其他资源.它是 ...

  10. 手把手教你!STM32单片机入门指南:从初级到中级工程师的学习路线

    ​在当今科技日新月异的时代,嵌入式系统作为智能设备的核心驱动力,正以前所未有的速度渗透到我们生活的方方面面.STM32系列微控制器,以其高性能.低功耗及丰富的外设资源,成了许多开发者踏入嵌入式领域首选 ...