• java 控制反转和依赖注入的理解


    开始好好学习java基础和思想~

    控制反转(IOC)是Spring框架的核心思想,用我自己的话说,就是你要做一件事,别自己可劲new了,你就说你要干啥,然后外包出去就好~
    依赖注入(DI) 在我浅薄的想法中,就是通过接口的引用和构造方法的表达,将一些事情整好了反过来传给需要用到的地方~

    这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现,使用接口的引用调用的方法,永远不需要改变

    举一个栗子:

    写个接口,说咱们购物去~

    public interface IShopping {
        void drive();
        String Money();    
    }

    在实现它两下:有钱人购物,没钱人购物     - -!这栗子举的

    public class RichMan implements IShopping{
        @Override
        public void drive() {
            System.out.println("Drive By Benz");        
        }
    
        @Override
        public String Money() {
            System.out.println("lot`s of money");
            return "10000";
        }
    }
    public class PoorGuy implements IShopping{
        @Override
        public void drive() {
            System.out.println("take a walk!");
        }
    
        @Override
        public String Money() {
            System.out.println("nothing");
            return "1";
        }
    }

    然后我们出去玩,顺便shopping一下吧~

    public class Play {
        
        private IShopping shoppingSomething;
        
      //使用构造方法,将实现传入
    public Play(IShopping shoppingSomething){ this.shoppingSomething = shoppingSomething; } public void withgirlFriend(){ shoppingSomething.drive(); shoppingSomething.Money(); }
    }

    将想用的实现方式,用容器注入进来,这里就模拟下下怎么注入:

    public class Containner {
        
        public Play getShopping(){
            return new Play(new RichMan());
        }
    }

    测试一下:

    public static void main(String[] args) {
            Containner containner = new Containner();
            Play play =  containner.getShopping();
            play.withgirlFriend();    
        }

    结果是:

    Drive By Benz
    lot`s of money

    如果再依赖注入的配置时,配置为穷人的实现,那我们的代码都不用变,结果就会改变~   嗯,应该理解了。

  • 相关阅读:
    MongoDB学习
    Linux 硬盘分区、分区、删除分区、格式化、挂载、卸载
    openstack中数据库连接数太多--pymysql.err.OperationalError,1040, u'Too many connections'
    openstack各服务端口使用情况
    linux常用命令
    云计算---OpenStack Neutron详解
    shell---数据流重定向
    云计算---openstack创建虚拟机过程
    SpringMvc面试题
    Linux 本机/异机文件对比
  • 原文地址:https://www.cnblogs.com/qiangweikang/p/4865486.html
Copyright © 2020-2023  润新知