IOC(Inverse of Control,控制反转)是一种设计模式,它将控制权从应用程序代码中转移出来,由容器来管理对象的生命周期和对象之间的依赖关系。实现IOC的关键在于依赖注入(DI),即容器负责在对象创建时将其依赖的其他对象注入进来。
手写IOC简单代码如下:
1. 创建一个接口 UserService 和实现类 UserServiceImpl
public interface UserService {
void getUserInfo();
}
public class UserServiceImpl implements UserService {
@Override
public void getUserInfo() {
System.out.println("Getting user information...");
}
}
2. 创建一个容器类 Container ,用于管理对象的创建和依赖注入
import java.util.HashMap;
import java.util.Map;
public class Container {
private Map<Class<?>, Object> beans = new HashMap<>();
public void registerBean(Class<?> clazz) throws IllegalAccessException, InstantiationException {
beans.put(clazz, clazz.newInstance());
}
public <T> T getBean(Class<T> clazz) {
return clazz.cast(beans.get(clazz));
}
}
3. 在主程序中使用IOC容器:
public class Main {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Container container = new Container();
container.registerBean(UserServiceImpl.class);
UserService userService = container.getBean(UserService.class);
userService.getUserInfo();
}
}
通过手写的IOC容器 Container 实现了控制反转,容器负责管理 UserService 对象的创建和依赖注入,主程序中只需要从容器中获取 UserService 对象并调用其方法即可,从这个例子可以得出Spring其实就是一个放各种对象的容器。
原文链接: https://blog.csdn.net/2401_82884096/article/details/136976876