码迷,mamicode.com
首页 > 编程语言 > 详细

Spring4(2)——IOC控制反转 (概念理解)

时间:2018-10-21 10:56:04      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:员工   margin   轻量级   ext   stat   实例化   r.java   控制   思路   

1.IOC控制反转的概念

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

2. IOC控制反转举例理解

  1. 实现功能:一个员工(张三)完成测试工作

    // 员工1实体:ZhangShang.java
    public class ZhangSan {
    
        public void test(){
            System.out.println("张三-测试程序");
        }
    }
    // 工作类:JavaWork.java
    public class JavaWork {
    
      public void doTest(){
        ZhangSan zhangsan=new ZhangSan();
        zhangsan.test();
      }
    }
    // 主管测试类:Test.java
    public class Test {
    
        public static void main(String[] args) {
            JavaWork javaWork=new JavaWork();
            javaWork.doTest();
        }
    }
    
    
    注:此时“测试工作”和“张三员工”完全耦合在一起,如若需要其它人做“测试工作”,那么 javaWork.doTest 方法里面的内容全部要修改,
    这时我们可以利用 IOC 的设计思路将控制权反转,将某个人执行这种工作的控制权转交给主管。
    .
  2. 实现功能:将控制权转交给主管

    // Tester.java 接口
    public interface Tester {
    
        public void test();
    }
    
    // 员工1实体:ZhangSan.java 实现 Tester 接口
    public class ZhangSan implements Tester{
    
        public void test(){
            System.out.println("张三-测试程序");
        }
    }
    
    // 员工2实体:LiSi.java 同样实现 Tester 接口
    public class Lisi implements Tester{
    
        public void test(){
            System.out.println("李四-测试程序");
        }
    }
    // 工作类:JavaWork.java
    public class JavaWork {
        
        private Tester tester;   //配置beans.xml 文件中的属性时,name值要和声明值完全对应
        
        public void setTester(Tester tester) {
            this.tester = tester;
        }
    
        public void doTest(){
            tester.test();
        }
    }
    // 主管测试类:Test.java
    public class Test {
    
        public static void main(String[] args) {
            JavaWork javaWork=new JavaWork();
            javaWork.setTester(new ZhangSan()); //只需要修改这里的实例化对象就可选择不同的员工来实现工作
            javaWork.doTest();
        }
    }

     

  3. 利用Spring 来管理

    <!-- beans.xml 配置 -->
    <bean id="zhangsan" class="com.java1234.service.ZhangSan"></bean>
    <bean id="lisi" class="com.java1234.service.Lisi"></bean>
    
    <bean id="javaWork" class="com.java1234.service.JavaWork">
        <property name="tester" ref="lisi"></property>
      <!-- 依赖注入,利用java的反射机制.设置 tester 的值引用为 lisi,其中name的值要和类里面声明的值完全对应 --> </bean>
    // 在2的基础上修改:主管测试类:Test2.java
    
    public class Test2 {
    
        public static void main(String[] args) {
            ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml"); 
            JavaWork javaWork=(JavaWork)ac.getBean("javaWork");
            javaWork.doTest();
        }
    }

Spring4(2)——IOC控制反转 (概念理解)

标签:员工   margin   轻量级   ext   stat   实例化   r.java   控制   思路   

原文地址:https://www.cnblogs.com/Cocoomg/p/9824220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!