首页 > 其他 > 详细

IOC

时间:2020-03-23 01:13:17      阅读:99      评论:0      收藏:0      [点我收藏+]

控制反转(Inversion of Control,缩写为IoC)

 

如果程序写死,那么用户每提出一个新的要求,程序员都需要修改源代码。

比如,现在有教师类Teacher和学生类Student

那么,用户要获取教师时候,伪代码为

public class UserServiceImpl implements UserService{
    private UserDao userDao = new Teacher();
    
    public void getUser() {
        userDao.getUser();
    }
      
}

如果现在要获取学生,就需要更改源代码

public class UserServiceImpl implements UserService{
    private UserDao userDao = new Student();
    
    public void getUser() {
        userDao.getUser();
    }
      
}

很不方便,于是,改变写法

public class UserServiceImpl implements UserService{
    private UserDao userDao;
//利用set方法实现值的动态注入
public setUserDao(UserDao userDao){ this.userDao = uerDao; } public void getUser() { userDao.getUser(); } }

在用户调用的时候

UserService userService = new UserServiceImpl();

userService.setUserDao(new Teacher());

//serService.setUserDao(new Student());

userService.getUser();

在这之前,程序员需要主动创建对象,控制权在程序员手上,如:

private UserDao userDao = new Student();

用了set之后,程序员不需要主动创建对象,而是程序被动的接收对象,如:

userService.setUserDao(new Teacher());

在这个过程中,控制权发生了转变,既实现了控制反转

 

之前的主动权在于业务层,程序员选择调用什么

技术分享图片

 

 

更改代码之后的主动权在于用户,用户选择调用什么

技术分享图片

 

 

控制反转定义:

控制反转是一种通过描述(XML或注解)并通过第三方生产或者获取特定对象的方式,在Spring中实现控制反转的是IoC容器,其实现方式是依赖注入(DI)

 

 

 

IOC

原文:https://www.cnblogs.com/tudoo/p/12549572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!