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

一.分层解耦

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

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

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

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

二.如何解耦

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

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

这就涉及到两个问题:

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

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

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

三.控制反转与依赖注入

相关推荐
魔镜前的帅比14 小时前
(开源项目)xsun_workflow_jira
java·jira
TH_114 小时前
15、IDEA可视化操作代码分支
java
smileNicky14 小时前
分组拖动排序功能全流程实现(前端Sortable.js + 后端Java批量更新)
java·前端·javascript
编程大师哥14 小时前
Java Web 核心全解析
java·开发语言·前端
惊鸿.Jh14 小时前
若依自定义后端接口404踩坑记录
java·开发语言
源码获取_wx:Fegn089514 小时前
基于springboot + vue考勤管理系统
java·开发语言·vue.js·spring boot·后端·spring·课程设计
认真敲代码的小火龙14 小时前
【JAVA项目】基于JAVA的仓库管理系统
java·开发语言·课程设计
Code_Geo14 小时前
JAVA大数据场景使用StreamingOutput
java·大数据·开发语言·streamingoutput
郑州光合科技余经理15 小时前
定制开发实战:海外版外卖系统PHP全栈解决方案
java·服务器·开发语言·javascript·git·uni-app·php
sg_knight15 小时前
Docker Engine 升级指南:保障容器安全的关键步骤
java·spring boot·安全·spring·spring cloud·docker·容器