IOC(控制反转,反向控制)

本文深入探讨了依赖注入(DI)的概念及其与传统设计模式的区别,详细介绍了控制反转(IoC)的过程,并通过具体代码示例展示了如何在实际项目中应用这些原则。文章进一步阐述了接口和实现类之间的解耦,以及如何使用Spring框架来管理依赖关系,最终实现更加灵活和可维护的软件架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOC又称DI(依赖注入),是对传统流程的一种颠覆。当某个实例需要另一个实例协助时,在传统的程序设计中,通常由调用者创建被调用者的实例。但在IOC中,创建被调用者的工作不再由调用者来完成,而是由容器来完成(例如Spring),而不再是调用者,所以说控制被反转了,称为控制反转。

1、传统设计
(1)应用层:
package xie.ioc;
public class App {

        public static void main(String[] args) {
            String name = "hello word";
            Service service = new Service();
            service.service(name);

        }
}

(2)、Service层
package xie.ioc;

public class Service {

    private Dao dao = new Dao();
    public void service(String words){
        dao.say(words);
    }
}

(3)、DAO层
package xie.ioc;

public class Dao {

    public void say(String words){
        System.out.println(words);
    }

}

2、控制反转
(1)、IDao

package xie.ioc1;

public interface IDao {

    public String say(String words);

}

(2)、DaoImpl

package xie.ioc1;

public class DaoImpl implements IDao{

    public String say(String words) {
        // TODO Auto-generated method stub
        return words;
    }

}

(3)、IService

package xie.ioc1;

public interface IService {

    public void service(String words);

}

(4)、ServiceImpl

package xie.ioc1;

public class ServiceImpl implements IService {

    private IDao dao;

    public void service(String words) {
        // TODO Auto-generated method stub
        System.out.println(dao.say(words));
    }

    public IDao getDao() {
        return dao;
    }

    public void setDao(IDao dao) {
        this.dao = dao;
    }

}

(5)、Test

package xie.ioc1;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class Test {

    public static void main(String[] args) {
        String words = "hello world";
        XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
        IService service = (IService) factory.getBean("service");
        service.service(words);
    }

}

(6)、applicationContext.xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值