开发者社区> 问答> 正文

ioc——inversion of control 控制反转是什么?

已解决

ioc——inversion of control 控制反转是什么?

展开
收起
dzuv4lze7fhcm 2022-03-31 22:26:15 492 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    打开 Java 软件,新建 Java Project,Project nam e 为 01spring4_ioc1。

    点击 Finish 后点确定。之后打开 src,Java Package内Name为cn.sxt.dao。

    点击 Finish。在 Java Interface 里修改 Name 为 UserDao。

    点击 Finish,然后进行代码编写。具体代码如下:

    package cn.sxt.dao:

    public interface UserDao{

    public void getUser();

    }

    接口需要类,先建一个类包,方便扩展,解决耦合性。

    package cn.sxt.dao. impl;

    import cn. sxt . dao. UserDao;

    public class UserDaoImpl implements UserDao {

    @Override

    public void getUser ( ) {

    System. out . print1n("获取用户数据") ;

    }

    }

    再创建一个 cn.sxt.service:

    package cn. sxt. service ;

    public interface UserService {

    public void getUser ( );

    }

    Service 里的实现是根据 dao。

    package cn. sxt.service. impl;

    import cn. sxt. dao.UserDao;

    import cn. sxt .dao . impl . UserDaoImpl;

    import cn. sxt. service.UserService;

    public class UserServiceImpl implements UserService {

    private UserDao userDao = new UserDaoImpl ( );

    @Override

    public void getUser ( ) {

    userDao. getUser ( );

    }

    }

    不同的 dao 实现不同。一旦改变了 dao,service 里面的 dao 调用也要改变,对象是自己创建的,当改变对象时原码也要重新去写。为了不去改变原码,可以通过以下方法:

    public class Test {

    public static void main(String[] args) {

    UserServiceImpl userService = new UserServiceImpl ( );

    userService. setUserDao( new UserDaoMySqlImpl ( ) );

    userService. getUser ( ) ;

    System. out. println(“--------------“);

    userService . setUserDao(new UserDao0racleImpl ( ) );

    userService. getUser ( );

    }

    }

    以上是让程序自己去 new 一个对象的方法,除此之外还有把他放进配置文件,然后调用配置文件的方法,此时程序不用管代码,只提供一个接口。程序员不再关注对象本身的具体实现,更多的去关注业务。现在和 dao 的实现无关,直接依赖于对象的创建。

    public class UserServiceImpl implements UserService{

    private UserDao userDao=null ;

    public void setUserDao(UserDao userDao) {

    this.userDao = userDao;

    }

    2022-03-31 22:26:42
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载