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

一.分层解耦

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

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

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

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

二.如何解耦

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

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

这就涉及到两个问题:

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

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

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

三.控制反转与依赖注入

相关推荐
LUCIAZZZ7 分钟前
Https解决了Http的哪些问题
java·网络·网络协议·spring·http·rpc·https
论迹28 分钟前
【JavaEE】-- 多线程(初阶)2
java·开发语言·java-ee
桃子是唯一的水果37 分钟前
java 单例模式(Lazy Initialization)实现遍历文件夹下所有excel文件且返回其运行时间
java·单例模式·maven
+72038 分钟前
如何在java中用httpclient实现rpc post 请求
java·开发语言·rpc
ybq1951334543140 分钟前
javaEE-SpringBoot日志
java·spring boot·后端
火烧屁屁啦44 分钟前
【JavaEE进阶】图书管理系统 - 贰
java·spring
xzzd_jokelin44 分钟前
Spring AI 接入 DeepSeek:开启智能应用的新篇章
java·人工智能·spring·ai·大模型·rag·deepseek
刘什么洋啊Zz1 小时前
剖析IO原理和零拷贝机制
java·运维·网络
卷心菜好6啊1 小时前
特辣的海藻!2
java
心态与习惯1 小时前
mac 下 java 调用 gurobi 不能加载 jar
java·jar·mac·cplex·gurobi