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

一.分层解耦

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

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

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

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

二.如何解耦

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

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

这就涉及到两个问题:

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

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

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

三.控制反转与依赖注入

相关推荐
旭久38 分钟前
SpringBoot的Thymeleaf做一个可自定义合并td的pdf表格
pdf·html·springboot
suweijie7683 小时前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
公贵买其鹿4 小时前
List深拷贝后,数据还是被串改
java
xlsw_7 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹7 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭8 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫8 小时前
泛型(2)
java
超爱吃士力架8 小时前
邀请逻辑
java·linux·后端
南宫生8 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石8 小时前
12/21java基础
java