分层解耦-02.分层解耦(IOC-DI引入)

一.分层解耦

内聚:软件中各个功能模块内部的功能联系,比如service中的EmpService接口的实现类EmpServiceA只用来实现数据的逻辑处理,模块内部功能联系紧密。那么我们就说他是高内聚的。

耦合:衡量软件中各个层/模块之间的依赖、关联的程度。比如在controller层中要调用service层中的方法,就需要引入service层的对象。这样两个层之间就发生了耦合。

而在软件设计中,原则是高内聚低耦合,因此我们要尽量的解除耦合。

解除耦合后,即使我们改变了service层实现类,也不用改变controller层的代码。

二.如何解耦

首先不要new EmpService接口的实现类对象

接着我们准备一个容器,用来存储EmpServiceA的实现类对象。用的话就从容器中拿。如果我们要切换实现类,那么就在容器中查找有无,然后使用。

这就涉及到两个问题:

1.实现类对象如何交给容器来管理。

2.容器怎么样为程序提供所依赖的资源。

使用控制反转和依赖注入。

三.控制反转与依赖注入

相关推荐
手握风云-4 分钟前
Spring AI:让大模型住进 Spring 生态(四)
java·后端·spring
南滑散修5 分钟前
红黑树-非黑即红
java·开发语言
Java面试题总结11 分钟前
Spring Boot:别再重复造轮子,这些内置功能香麻了
java·spring boot·后端
迷糊小白告19 分钟前
Java微服务——SpringCloud
java·spring cloud·微服务
qq_2698704319 分钟前
java rabbitmq 队列在Springboot的设计
java·rabbitmq·java-rabbitmq
abcnull29 分钟前
Springboot+Vue2的Web项目小白入门Demo快速学习!
java·elementui·vue·maven·springboot·web·小白
2501_9327502634 分钟前
Java IO流基础全面详解:字节流、字符流
java·开发语言
逸Y 仙X41 分钟前
文章二十二:ElasticSearch EQL事件查询语言
java·大数据·elasticsearch·搜索引擎·全文检索
liulilittle44 分钟前
LLAMA-CLI 运行千问3.6(R9-7945HX+64G+RTX40608G)
java·前端·llama
后端漫漫1 小时前
Redis 键值对序列化
java·redis