Spring中的IOC能降低耦合性的理解

本文从传统实例化对象的方式出发,逐步引入接口、工厂模式和反射等概念,最终解释了IOC是如何通过这些技术手段降低代码间的耦合度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学到spring, 老师一定会讲: IOC能够降低耦合性,可是为啥会降低, 我的脑袋瓜子表示不李姐,呜呜呜~,这不吊我胃口吗hh😭😭

第一层 :传统方式

通常写Java程序都是通过实例化来获取对象,实例如下:

Dog dog = new Dog();
dog.woof();

注意:如果我们想把Dog换成其他的对象(例如 Cat cat = new Cat()), 换完之后, cat对象显然不一定存在woof方法,但它可能有 bark(), 那上面的程序基本要重写, 如果有10000处声明,10000调用, 今天肯定是搞不完了hh😭

第二层 : 接口

有的人肯定会说,我们约定一些公用的方法,大家去实现它,不就可以切换了吗?这就是接口

Animal animal = new Dog()
animal.bark();

注意: 如果现在我想把Dog换成Cat, 只需要将new Dog 换成 new Cat ,也就是说,如果有10000处类, 今晚加班或许就能搞定hh💪

接口能够一定程度上降低代码的耦合度

第三层 : 工厂模式

有的懒人,想为啥不能建一个既能生产Dog又能生产Cat对象的类,不就能提高效率吗?

class AnimalFactory{
	AnimalFactory(){}
	public static Animal getInstance(String type){
		Animal result = null;
		if("dog".equals(type)){
			result = new Dog();
		}
		if("cat".equals(type)){
			result = new Cat();
		}
		return result;
	}
}


Animal animal = AnimalFactory.getInstance("dog");
animal.bark();

注意: 这种方法把创建对象交给了专业的类,只要输入我需要的参数,就能返回给我正确的对象,但它并没有解决声明语句的修改,为了替换部分程序, 10000处,大概2~3个小时就能解决😍

第四层:反射

又有懒人说, 在写程序的时候不告诉工厂需要什么,等到运行的时候再告诉工厂需要什么不就行了吗?

Animal animal = AnimalFactory.getInstance(去config中读取想要的);
animal.bark();

想要的 = dog

这样,工厂生产什么全部写在一个文件里,只需要利用反射,运行的时候生产想应得东西即可。

如果想修改想要得,只需修改配置文件里的想要的即可,很快的。另外除了配置文件,其他基本没有修改,意味着代码不需要重新编译

总结

第四层就是IOC在做的事情
IOC = 工厂模式+反射+配置文件读取(xml)

这里得工厂模式并不是真的生产对象,而是取出对象而已
所有的JavaBean都被IOC的工厂管理,需要的时候就和工厂说一声,需要XXX就可以了,这样工厂就会返回给你一个正确的对象.在不需要的时候修改工厂的生产列表(配置文件),工厂就停止生产该JavaBean了.

原文链接:https://blog.youkuaiyun.com/tinpo_123/article/details/108718367

安装Docker安装插件,可以按照以下步骤进行操作: 1. 首先,安装Docker。可以按照官方文档提供的步骤进行安装,或者使用适合您操作系统的包管理器进行安装。 2. 安装Docker Compose插件。可以使用以下方法安装: 2.1 下载指定版本的docker-compose文件: curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2.2 赋予docker-compose文件执行权限: chmod +x /usr/local/bin/docker-compose 2.3 验证安装是否成功: docker-compose --version 3. 在安装插件之前,可以测试端口是否已被占用,以避免编排过程中出错。可以使用以下命令安装netstat并查看端口号是否被占用: yum -y install net-tools netstat -npl | grep 3306 现在,您已经安装Docker安装Docker Compose插件,可以继续进行其他操作,例如上传docker-compose.yml文件到服务器,并在服务器上安装MySQL容器。可以参考Docker的官方文档或其他资源来了解如何使用DockerDocker Compose进行容器的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装docker-compose插件](https://blog.youkuaiyun.com/qq_50661854/article/details/124453329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker安装MySQL docker安装mysql 完整详细教程](https://blog.youkuaiyun.com/qq_40739917/article/details/130891879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值