• Spring核心之IOC


    IOC是Spring的两大核心之一:IOC的核心就是解耦。

      举个例子:有2个班级可以上课,校长指定老师去上课,代码如下

      

    package com.hongcong.test;
    
    public class Class1 {
        public void teach(){
            System.out.println("一班在上课");
        }
    }
    package com.hongcong.test;
    
    public class Class2  {
        public void teach(){
            System.out.println("二班在上课");
        }
    }

    teacher

    package com.hongcong.test;
    
    public class teacher {
        
    
        public void doTeach(){
            Class1 class1 = new Class1();
            class1.teach();
            
        }
    }

    校长

    package com.hongcong.service;
    
    import com.hongcong.test.Class1;
    import com.hongcong.test.Class2;
    import com.hongcong.test.teacher;
    
    public class Principal {
        public static void main(String[] args) {
            teacher teacher = new teacher();
            teacher.doTeach();
            
        }
    }

    这时候去执行校长时,一班就开始上课了。但是如果校长想要老师去二班上课的话,要么修改老师中的方法;要么新增老师的方法且修改校长中的方法。可以看出,此时的代码耦合在了一起。这时候可以借助IOC的思想去重新设计这个程序,代码如下:

    定义一个上课的接口,然后班级一和班级二都去实现这个接口:

    package com.hongcong.test;
    
    public interface TeachInterface {
        public void teach();
    }
    package com.hongcong.test;
    
    public class Class1 implements TeachInterface{
        public void teach(){
            System.out.println("一班在上课");
        }
    }
    package com.hongcong.test;
    
    public class Class2 implements TeachInterface{
        public void teach(){
            System.out.println("二班在上课");
        }
    }
    package com.hongcong.test;
    
    public class teacher {
         private TeachInterface teachInterface;
        
        public void setTeachInterface(TeachInterface teachInterface) {
            this.teachInterface = teachInterface;
        } 
    
        public void doTeach(){
            
            teachInterface.teach();
        }
    }
    package com.hongcong.service;
    
    import com.hongcong.test.Class1;
    import com.hongcong.test.Class2;
    import com.hongcong.test.teacher;
    
    public class Principal {
        public static void main(String[] args) {
        
            teacher teacher = new teacher();
            teacher.setTeachInterface(new Class2());
            teacher.doTeach();
        }
    }

    此时校长如果想让老师去一班上课,只需要修改teacher.setTeachInterface(new Class2());方法中的参数就可以了。老师已经和去哪个班级上课完全没有关系了,只要校长下个指令就行。

  • 相关阅读:
    vim实用技巧
    《C程序设计语言》学习笔记
    《鸟哥的Linux私房菜:服务器搭建篇》第一部分学习笔记
    入职培训学习心得
    [NOI2013]树的计数
    bzoj1779 [Usaco2010 Hol]Cowwar 奶牛战争(网络流)
    P2944 [USACO09MAR]地震损失2Earthquake Damage 2(网络流)
    bzoj3218 a + b Problem(网络流+主席树)
    P4542 [ZJOI2011]营救皮卡丘(Floyd+网络流)
    P4843 清理雪道(上下界网络流)
  • 原文地址:https://www.cnblogs.com/hongcong/p/7587593.html
Copyright © 2020-2023  润新知