spring之ioc (控制反转)

IOC(控制反转:Inverse of Control ),又称作 依赖注入,是一种重要的面向对象编程的法则来削减计算机程
序的耦合问题。

实例分析如下:

两个类:ZhangSan.java和Lisi.java

package com.java1234.service;

public class ZhangSan implements Tester{

    public void test(){
        System.out.println("张三干活");
    }
}

package com.java1234.service;

public class Lisi implements Tester{

    public void test(){
        System.out.println("李四干活");
    }
}

JavaWork类

package com.java1234.service;

public class JavaWork {
  

    public void doTest(){
        /*ZhangSan zhangsan=new ZhangSan();
        zhangsan.test();*/

         Lisi lisi=new LiSi();
        lisi.test();
    }
}

Test类     

package com.java1234.test;

import com.java1234.service.JavaWork;
import com.java1234.service.Lisi;

public class Test {

/**

    *主管执行命令

*/
    public static void main(String[] args) {
        javaWork.doTest();
    }
}

//现在是张三和李四两个类和JavaWork类耦合度太高,由JavaWork控制张三和李四

使用控制反转,把控制张三和李四的权从JavaWork.java变成Test.java

JavaWork.java

package com.java1234.service;

public class JavaWork {
    private Tester tester;
  
    public void setTester(Tester tester) {
        this.tester = tester;
    }

    public void doTest(){
        tester.test();
    }
}
 

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="zhangsan" class="com.java1234.service.ZhangSan"></bean>
  
    <bean id="lisi" class="com.java1234.service.Lisi"></bean>
 

     //spring会把JavaWork中的属性tester的值通过set方法设置为lisi   (依赖注入)

     
    <bean id="javaWork" class="com.java1234.service.JavaWork">
        <property name="tester" ref="lisi"></property>
    </bean>
</beans>

猜你喜欢

转载自blog.csdn.net/qq_40135955/article/details/88406646
今日推荐