iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring IOC降低耦合的问题怎么解决
  • 392
分享到

Spring IOC降低耦合的问题怎么解决

2023-07-02 13:07:53 392人浏览 八月长安
摘要

本篇内容主要讲解“spring ioc降低耦合的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring ioC降低耦合的问题怎么解决”吧!一、传统方式创建对象

本篇内容主要讲解“spring ioc降低耦合的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring ioC降低耦合的问题怎么解决”吧!

一、传统方式创建对象

通常我们是这样创建对象的

WuliCar wuli = new WuliCar();wuli.run();

第一天:二明想用一辆车,然后通过 new 搞了一辆五菱荣光,调用 run 方法开始使用,车子跑起来了,很高兴。

一个月后:二明公司赚钱了,不想开五菱了,想换辆宝马,接下来二明一顿操作:

BaoMacar baoma = new BaomaCar();baoma.run();

很好,车子从五菱换成了宝马,跑起来了,很高兴。

半年后:二明公司赚大钱了,二明想搞辆直升机,接下来又一顿操作

ZhiShenJi zhi = new ZhiShenJi();zhi.fly();

这次改动比较大,宝马换成直升机,run 换成了 fly。

看到这里先思考一下,不想往下看,这样做有什么问题吗?

思考时间到,我们接着往下看。

从代码看好像没多大问题,不就改了两行代码嘛,这有啥。你想想,如果你的代码中有 1000 个地方都是这么写的,你想把宝马换成直升机岂不是要改 1000 次,run 改成 fly 又要改 1000 次,晚上别想下班了。

二、接口编程

经过上次一顿操作,二明加了好几天班才弄完,二明想想每天这么搞不得累死,不行,得想想办法。于是二明脑子一转了,一想就想到了。我定义好一些方法,大家都按照这个规则来,不就好了。

public interface vehicle {    // 定义一个交通工具接口,有一个 work 方法void work();}

宝马实现这个接口:

public class Baoma implements vehicle {    @Override    public void work() {System.out.println("宝马跑起来");            }}

飞机实现这个接口:

public class ZhiShenJi implements vehicle {    @Override    public void work() {System.out.println("直升机飞起来");            }}

经过上面改造后,后面二明想把宝马换成直升机的时候只需要修改 new 那块就可以了,省了很多时间

三、工厂方法

利用接口确实好一些了,但是问题还是没有解决。为了提高内聚性,专职类负责特定的事情,所以我们使用一个类作为工厂类,既能生产 Car 又能生产 ZhiShenJi

class VehicleFactory{VehicleFactory(){}public static Vehicle getInstance(String type){Animal result = null;if("car".equals(type)){result = new Car();}if("zhishenji".equals(type)){result = new ZhiShenJi();}return result;}}

如果有一次我想锻炼身体,想骑自行车了,那么很简单

class VehicleFactory{VehicleFactory(){}public static Vehicle getInstance(String type){Animal result = null;if("car".equals(type)){result = new Car();}if("zhishenji".equals(type)){result = new ZhiShenJi();}        if("zixinGChe".equals(type)){result = new ZiXingChe();}return result;}}
Vehicle vehicle = VehicleFactory.getInstance("zixingche");vehicle.work();

这种方法把创建对象的过程交给了一个专业的类(Factory),我只需要告诉他我需要什么(参数),他就会返回给我正确的对象,只是解决了内聚性的问题,但是他并没有解决我的声明语句七零八落的散落在程序中,我还是需要去将参数从car替换为zixingche

四、反射

后来二明想到一个更绝妙的主意.我在写程序的时候不告诉工厂我需要什么,等到运行的时候我再告诉工厂我需要什么,再利用反射技术给我生产出来不就可以了吗?二明说干就干

Vehicle vehicle = VehicleFactory.getInstance(读取配置文件);vehicle.work();我想要的:zixingchezixingche.work();

大功告成,这样我要什么,都写在一个配置文件中,利用反射技术就可以创建好,这样我就不用在生产了,下次换车的时候直接去配置文件中修改就好了,代码中不用修改。

对于生产对象这件和业务没有直接关系的事情,我们已经提取给了专业的工厂,专业的工厂还是根据配置文件进行的生产,想生产什么我只需要改一处即可,这就是降低了耦合性(生产对象和业务之间的耦合,让生产对象对业务的影响降到了最低)。

五、Spring IOC

上面第四点说的那些功能,Spring IOC 已经帮助我们实现了,Spring IOC 就是利用工厂模式+反射实现自动生产对象,管理对象生命周期的功能。降低了代码的耦合

到此,相信大家对“Spring IOC降低耦合的问题怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Spring IOC降低耦合的问题怎么解决

本文链接: https://www.lsjlt.com/news/342067.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring IOC降低耦合的问题怎么解决
    本篇内容主要讲解“Spring IOC降低耦合的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring IOC降低耦合的问题怎么解决”吧!一、传统方式创建对象...
    99+
    2023-07-02
  • SpringIOC能降低耦合的问题分析及解决方法
    目录一、传统方式创建对象二、接口编程三、工厂方法四、反射五、Spring IOC总结有同学在学习 Spring 框架中可能会问这样的问题,为什么通过依赖注入就可以降低代码间的耦合呢?...
    99+
    2024-04-02
  • Java 你知道什么是耦合、如何解(降低)耦合
    目录什么是耦合性什么是程序间的耦合如何解耦工厂模式解耦案例原因就是:解决思路:解耦合这里,我们先举个栗子,比如排序我们再举个栗子,socket什么是耦合性 耦合性(Coupling)...
    99+
    2024-04-02
  • Windows 11降低NVMe SSD性能的问题怎么解决
    本篇文章给大家分享的是有关Windows 11降低NVMe SSD性能的问题怎么解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。自Windows11推出以来,就出现了许多的问...
    99+
    2023-06-27
  • node.js怎么降低版本解决sass和node.js冲突问题
    这篇文章主要讲解了“node.js怎么降低版本解决sass和node.js冲突问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node.js怎么降低版本解决sass和node.js冲突问题...
    99+
    2023-07-05
  • 关于Spring Ioc和DI注解的问题
    目录1.Spring配置数据源1.1 数据源的开发步骤数据源的手动创建Spring配置数据源抽取jdbc配置文件(最后的方法实现配置数据源)Spring注解开发2 ,Spring新注...
    99+
    2024-04-02
  • Java Code Cache满导致应用性能降低问题解决
    目录0 问题描述1 排查问题2 解决问题3 背景知识3.1 JIT即时编译3.2 Code Cache3.3 分层编译3.4 Code Cache 满了怎么办3.5 Code Cac...
    99+
    2024-04-02
  • node.js降低版本的方式详解(解决sass和node.js冲突问题)
    目录一、概述二、降低node.js版本(一)卸载清除原版本 (二)下载指定的版本与配置(三) 版本更改成功一、概述 在使用vue的时候,会遇到项目的依赖(package.j...
    99+
    2023-02-22
    node.js降低版本 sass和node.js冲突
  • Windows11中的低音频问题怎么解决
    本文小编为大家详细介绍“Windows11中的低音频问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Windows11中的低音频问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,...
    99+
    2023-04-13
    windows11
  • golang接口性能低问题怎么解决
    要解决Golang接口性能低的问题,可以尝试以下几种方法: 使用具体类型而非接口类型:接口类型在运行时需要进行类型断言,会增加一...
    99+
    2023-10-23
    golang
  • spring cloud整合ribbon问题及解决方案
    SpringCloud 整合ribbon的时候出现了这个问题 java.lang.IllegalStateException: No instances available fo...
    99+
    2024-04-02
  • 怎么解决Struts Hibernate的整合问题
    这篇文章主要介绍“怎么解决Struts Hibernate的整合问题”,在日常操作中,相信很多人在怎么解决Struts Hibernate的整合问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决Str...
    99+
    2023-06-17
  • python多线程效率低问题怎么解决
    Python中的多线程效率低的问题主要是由于Python的全局解释器锁(GIL)导致的。GIL是Python解释器中的一个机制,它确...
    99+
    2023-09-04
    python
  • Fastai过拟合问题怎么解决
    过拟合是模型在训练集上表现良好,但在测试集上表现差的现象。解决Fastai模型过拟合问题可以尝试以下方法: 数据增强:增加训练数...
    99+
    2024-04-02
  • spring怎么解决相互依赖问题
    在Spring中,可以通过以下几种方式解决相互依赖问题:1. 构造函数注入:使用构造函数将依赖项作为参数传递给类的构造函数,从而实现...
    99+
    2023-08-16
    spring
  • Spring循环依赖问题怎么解决
    在Spring中,循环依赖问题是指两个或多个bean之间出现相互依赖的情况。由于Spring容器默认使用单例模式管理bean,因此循...
    99+
    2023-08-31
    Spring
  • 怎么解决Spring循环依赖问题
    本篇内容介绍了“怎么解决Spring循环依赖问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言循环依赖...
    99+
    2024-04-02
  • 怎么解决Git合并冲突的问题
    本篇内容介绍了“怎么解决Git合并冲突的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!合并并不仅仅是简单的文件添加、移除的操作,Git ...
    99+
    2023-06-04
  • CSSHack与float闭合的问题怎么解决
    本篇内容主要讲解“CSSHack与float闭合的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSSHack与float闭合的问题怎么解决”吧!C...
    99+
    2024-04-02
  • PyTorch中怎么解决过拟合的问题
    PyTorch中解决过拟合问题的方法有很多种,以下是一些常用的方法: 正则化:在损失函数中添加正则项,如L1正则化或L2正则化,...
    99+
    2024-03-05
    PyTorch
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作