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

一.分层解耦

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

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

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

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

二.如何解耦

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

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

这就涉及到两个问题:

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

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

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

三.控制反转与依赖注入

相关推荐
@航空母舰1 小时前
SpringBoot通过Map实现天然的策略模式
java·spring boot·后端
Co_Hui2 小时前
Java 并发编程
java
long3163 小时前
Java 新手入门与实战开发指南
java·开发语言
执笔画流年呀3 小时前
Linux搭建Java项目部署环境
java·linux·运维
程序员天天困3 小时前
Arthas ognl 表达式从入门到实战:掌握在线调试最强的表达式引擎
java·jvm·后端
IT_Octopus4 小时前
Spring Boot 中 ThreadLocal 请求上下文的完整生命周期
java·spring boot·spring
用户40966601317514 小时前
Lombok 你用对了吗?@Data 之外的 6 个隐藏神器
java·后端·代码规范
梅头脑4 小时前
交易跨10个库、日均千万订单——选错一次分布式事务方案,加班三个月重写
java·分布式
久久学姐5 小时前
基础转码学 AI:Java+Python 双语言入门,3 个月可落地实战项目
java·python·ai·转码·实战项目
花生了什么事o5 小时前
synchronized 与 ReentrantLock:Java 锁机制原理与实现对比
java·开发语言