二.Spring的IOC思想

1.IOC:Inversion of Control(控制反转)

 

 

 

 

 

 

 

之前的开发过程

UserDao 接口

UserDaoIml 实现

UserService 接口

UserServiceiml 实现

随着需求的不断增加,我们就需要不断的去修改源代码,为了弥补这个缺点,我们可以使用一个set方法,进行动态的创建需求对象

2.演示:

一个Dao接口,2个Dao的实现类(对应不同的需求)

package com.why.dao;

/**
 * @program: Spring
 * @description:
 * @author: @why
 * @create: 2020-08-30 15:24
 **/
public interface UserDao {
    //不同的功能会发出不同的声音
    public void Function();
}

 

package com.why.dao;

/**
 * @program: Spring
 * @description:
 * @author: @why
 * @create: 2020-08-30 15:26
 **/
public class UserDaoByMysql implements  UserDao {
    @Override
    public void Function() {
        System.out.println("发出了Mysql的叫声");
    }
}

 

package com.why.dao;

/**
 * @program: Spring
 * @description:
 * @author: @why
 * @create: 2020-08-30 15:26
 **/
public class UserDaoByOrcle implements UserDao{
    @Override
    public void Function() {
        System.out.println("发出了Orcle的叫声");
    }
}

一个service接口,一个service实现类

package com.why.service;

/**
 * @program: Spring
 * @description:
 * @author: @why
 * @create: 2020-08-30 15:28
 **/
public interface Service {
    //用户需求
    public void UserUse();
}

 

package com.why.service;

import com.why.dao.UserDao;
import com.why.dao.UserDaoByMysql;
import com.why.dao.UserDaoByOrcle;

/**
 * @program: Spring
 * @description:
 * @author: @why
 * @create: 2020-08-30 15:28
 **/
public class ServiceIml implements Service {
 private    UserDao dao;
    //根据用户的需求来set属性
    public void setDao(UserDao dao) {
        this.dao = dao;
    }

    @Override
    public void UserUse() {
        dao.Function();
    }

    public static void main(String[] args) {
        ServiceIml serviceIml=new ServiceIml();
        //根据用户需求所发出的不同叫声
        serviceIml.setDao(new UserDaoByMysql());
        serviceIml.UserUse();
        serviceIml.setDao(new UserDaoByOrcle());
        serviceIml.UserUse();

    }
}

3.图片演示:

之前程序员的工作,扮演的角色:

 

 

 

现在程序员的作用,扮演的角色:

 

 

 

总结:

对于spring,它就是一个大型的对象容器,将我们所有写好的类放到这个容器中去,接着根据我们自己的需求,再到这个容器中去取。

解耦也都是因为这个容器  (图片来自互联网)

 

posted @ 2020-08-30 15:50  why666  阅读(125)  评论(0编辑  收藏  举报