2、IOC控制反转简介
耦合和内聚
耦合coupling:结合 联结
- 耦合:代码书写过程中技术的结合紧密度。用于衡量各个模块之间的紧密程度。
- 内聚:单个模块内部组成部分之间的联系。测试紧密程度。
程序书写目标:高内聚,低耦合。
模块之间不能紧密,单个模块内部要高度紧密。
1、工厂模式发展历程
1、直接new一个dao对象在我们的类代码中(传统的开发模式)
- 直接new一个dao对象在我们的类代码中
因为每出现一个dao实现类,就会要重新再类中去创建对象,这样增加了两个模块之间的耦合程度,所以才出现了工厂模式
2、出现了工厂代理(使用工厂类new一个对象)
new对象不再在我们的类中操作,全部在工程类中的操作,工厂类会返回一个new出来的对象,也就是说,创建对象的任务交给了工厂类。
有了工厂就不用修改调用方源代码,但是需要修改工厂代码;工厂与dao代码耦合,这样也降低了两个模块之间的耦合度。
3、加入了配置文件
将实现类更新到配置文件中,工厂只需要通过读取配置文件的方式将实现类返回给我们的类。只需要改配置文件。
4、spring雏形
有了spring就不用再使用工厂设计模式了,sping容器比工厂模式更优秀。
5、ioc
ioc:控制反转,spring控制应用程序所需要使用的外部资源;
传统模式开发是通过new一个对象,去获取另一个类的资源的,这种主动权全都在类手上,代码不移维护,为了容易维护代码才有了spring的控制反转,控制反转就相当于,spring拿下了类的控制权,
所有的new对象和获取外部资源都交给spring的ioc容器
spring控制的资源全部放在spring容器当中,该容器成为ioc容器。
3、ioc控制反转入门案例
1、接口
package com.zhu.service;
public interface UserService {
public void save();
}
2、这个接口的实现类
package com.zhu.service.impl;
import com.zhu.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public void save() {
System.out.println("这个