0
点赞
收藏
分享

微信扫一扫

IOC理念推导之传统业务

秦瑟读书 2022-02-13 阅读 92

文章目录

2、IOC理念推导之传统业务

举个栗子:

1、传统的业务实现:

1.UserDao接口

2.UserDaoImpl实现类

​ UserDaoMysqlImpl

​ UserDaoOracleImpl

3.UserService业务接口

4.UserServiceImpl 业务实现类

1、在dao层写一个UserDao接口和一个实现类
package com.blackcat.dao;

public interface UserDao {

    void getUser();
}


package com.blackcat.dao;

public class UserDaoImpl implements UserDao {

    public void getUser() {
        System.out.println("默认获取用户的数据");
    }
}


2、在service层中编写一个接口:这个接口中调用dao层的方法
package com.blackcat.service;

public interface UserService {

    void getUser();
}

3、在service层中编写一个实现类:这个实现类,通过聚合的方式,调用 Dao层的功能。
public class UserServiceImpl implements UserService{

    private UserDao  userDao = new UserDaoImpl();

    public void getUser() {
        userDao.getUser();
    }
}

4、编写测试类 MyTest 测试我们的代码

public class MyTest {
    @Test
    public void testUser(){

        //用户实际调用的是业务层,dao层他们不需要接触!
        UserServiceImpl userService = new UserServiceImpl();

        userService.getUser();
    }
}


默认获取用户的数据

Process finished with exit code 0

2、如果我们要修改需求

1、比如业务层要实现dao层修改mysql数据库,或者oracle数据库的数据,我们需要改动原代码:
package com.blackcat.dao;

public class UserDaoMysqlImpl  implements UserDao{

    public void getUser() {
        System.out.println("Mysql获取用户数据!");
    }
}


package com.blackcat.dao;

public class UserDaoOracleImpl implements UserDao {

    public void getUser() {
		 System.out.println("Oracle获取用户数据!");
    }
}

//修改原代码
public class UserServiceImpl implements UserService{

    private UserDao  userDao = new UserDaoMysqlImpl();

    public void getUser() {
        userDao.getUser();
    }
}
2、思想:我们可以让我们的程序不动,让我们的客户端去做一些事情。

在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改原代码!

如果程序代码量十分大,修改一次的成本代价十分昂贵!

3、我们使用一个set接口实现,发生了革命性的变化!
public class UserServiceImpl implements UserService{

    private UserDao  userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void getUser() {
        userDao.getUser();
    }
}

  • 之前,程序主动创建对象,控制权在我们程序员手里。

  • 后来,使用了set注入接口类型对象以后,程序不再具有主动性,只是被动地接受对象。

这种思想,在本质上解决了问题,我们程序猿不用再去管理对象的创建了,有什么好处?

4、好处:

大大降低了程序的耦合性,让我们程序员专注于业务的的实现上,这就是IOC的原型。

举报

相关推荐

0 条评论