分层解耦-IOCDI引入

目录

分层解耦

如何解除耦合

控制反转(IOC)

依赖注入(DI)

Bean对象

分层解耦

  • 内聚:软件中各个功能模块内部的功能联系
  • 耦合:衡量软件中各个层/模块之间的依赖、关联程度
  • 软件设计原则:高内聚低耦合

在三层架构那篇文章中写文章-CSDN创作中心

 Service层和Controller层,Service层和Dao层都存在耦合的情况,具体代码片段如下:

 

具体来说就是Service层中创建了一个Dao层中的实现类的对象,假如说,Dao层中实现类需要改变名称,那么使用该类创建对象的类也需要进行相应更改。同理,Controller层中也调用了Service层中的实现类来创建对象,也会产生相同的问题。这不符合软件设计中低耦合的原则。

如何解除耦合

在上述分析也可以知道,产生耦合的原因是,一个类中调用了另一个类来创建对象,即对象的组合,那么我们就可以使用一个专门的容器来存放所需要的对象,需要调用对象的类就可以直接在容器中进行搜索。那么为了实现上述两个过程(将对象放入容器,将对象从容器中拿到类中使用),就需要引入控制反转和依赖注入这两个概念。

  • 控制反转实现将对象放入容器(IOC容器或者Spring容器)中
  • 依赖注入实现将对象放入对应类中
  • bean就是容器中创建的对象

控制反转(IOC)

  • Inversion Of Control。简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转

依赖注入(DI)

  • Dependency Injection。简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入

Bean对象

  • IOC容器中创建、管理的对象,称之为bean

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20429.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源Cillium项目为容器提供强大的网络功能

试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。一项名为Cilium的开源项目试图基于Linux内核中所用的技术,为容器提供一种新的网络方法。 试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器…

HP Laser 136nw打印机与win10实现Wifi直连

HP Laser 136nw打印机与win10实现Wifi直连 HP Laser 136nw打印机设置HP Smart HP Laser 136nw打印机设置 打开打印机WIFI开关,使其他设备可以搜索到 查看打印机设备名称,用于设备搜索 查看打印机WIFI密钥,用于windows与打印机直连 根据…

手写JAVA线程池

前言 手写一个简单的java线程池:重点关注,如何确保一直有运行的线程?如何确保线程消费提交的任务信息?。一直保存有运行的线程底层使用的是死循环。使用消息队列确保信息的提交和消费。消息队列使用先进先出原则。 步骤 线程池…

iOS开发 - 系统自带框架实现扫一扫功能

iOS 扫一扫 利用系统自带框架实现扫一扫功能 一 项目配置 扫一扫功能相机和相册权限&#xff0c;在info.plist中设置询问用户是否允许访问的权限。 info.plist加入NSCameraUsageDescription、NSPhotoLibraryUsageDescription、NSPhotoLibraryAddUsageDescription <key&g…

spring 详解二 IOC(Bean xml配置及DI)

配置列表 Xml配置 功能描述 <bean id"" class""></bean> Bean的id&#xff0c;配置id会转为Bean名称和不配就是全限定类名 <bean name"" ></bean> Bean的别名配置&#xff0c;存储在Factory的aliasMap中通过别名也…

操作系统Linux—day01

编程 网页 软件 网站项目 知识点&#xff1a; 前端页面&#xff1a;HTML css JavaScript JQuery VUE 数据库&#xff1a;Oracle MySQL 服务器&#xff1a;服务器的操作系统Linux Http://115.159.96.174:8090/EasyBuy/ www.baidu.com>http://180.101.49.12/ 后台技术…

几何伙伴行泊一体解决方案入选浦东人工智能十大创新技术

2023年7月8日&#xff0c;在全球瞩目的世界人工智能大会&#xff08;WAIC&#xff09;浦江东岸分会场&#xff0c;主题为“引领未来&#xff0c;赋能焕新”的“2023世界人工智能大会浦东论坛”隆重举办。浦东新区作为全国首个人工智能创新应用先导区&#xff0c;正打造上海人工…

electron的(maximize)最大化方法会导致头部白色横条以及四周大黑边

参考文章&#xff1a;https://www.w3cways.com/2505.html 感谢这位博主 我在使用win.maximize()后发现应用程序虽然最大化了&#xff0c;但是四周和顶部有一定宽度的黑边白边&#xff0c;在百度一段时间后没有发现其他人有这个问题 &#x1f614;唉 必现步骤&#xff1a; 只要…

前端理解的HTTP缓存(作用、缓存策略、缓存控制机制、应用)

一、HTTP缓存有什么作用&#xff1f; 缓存是为了重复使用而被存储的&#xff0c;可以减少浏览器和服务器之间通信的次数、降低网络延迟、加速页面加载、提高用户体验性等。不但能使网页打开速度更快&#xff0c;还能减少服务器的压力。 二、 浏览器的缓存策略有哪些&#xff1…

【MySQL】不就是事务

前言 嗨咯&#xff0c;小伙伴们大家好呀&#xff0c;我已经一个星期没有更新了&#xff0c;实在抱歉&#xff01;本期我们要学习MySQL初阶中的最后一课&#xff0c;MySQL数据库中的事务也算是近几年面试必考的问题&#xff0c;所以我们一定要认真学习。 目录 前言 目录 一、事…

派盘支持单向和双向资料同步

派盘作为一款本地云存储解决方案&#xff0c;不仅支持双向同步&#xff0c;还提供了设置部分文件夹单向同步的功能。这意味着用户可以根据自己的需求&#xff0c;精确控制文件夹的同步方向&#xff0c;以实现更有针对性的文件管理和同步。 π-Disk派盘 – 知识管理专家 派盘的…

最详细的下载安装PicGo图床配合Typora使用

1.node.js下载安装1.2 检验安装成功 2. PicGo下载安装3. 配置Gitee【配合PicGo使用】3.1 获取PicGo的token 4. 配置PicGo4.1 下载插件4.2 配置图床[Gitee]4.3 配置Typora 5. 上传图片到Gitee【重要】6.解决配置错误 1.node.js下载安装 【node.js下载链接】点击跳转页面&#x…