zoukankan      html  css  js  c++  java
  • Spring源码阅读 ------------------- SpringFrameWork 5.2 术语理解(三)

    一、一定要理解的概念

        1、控制反转

        对象A和对象B,对象A中需要new 一个对象B,但是,现在需要对象A,不在自己内部new 对象B,把new 对象B的权限交给第三方(IOC框架),操作的过程,就是控制反转(白话讲解).

        例如:

         常态

    1 public A{
    2 
    3 B b = new B();
    4 
    5 }
    View Code

         反转

    1 public A{
    2 
    3 @Autoware
    4 B b;
    5 
    6 }
    View Code

        常态就是正转,就是调用者自己创建对象,自己控制这个对象的创建,生命周期,销毁这些事情,反转就是把创建对象这一套交给第三方(IOC框架)替你来做,你只做调用这件事,从而降低耦合度.

    举个生活中的例子:睡觉和盖被子.你睡觉一定要盖被子,有两个事物,一个是睡觉,一个是盖被子,你每次睡觉都需要盖一床被子,那么,按照编程的面向对象思维考虑,你,作为一个入口类,你每次睡觉的时候,都要盖一床新被子,即new一个对象,在这种情况下,你每次睡觉都要去买床新被子,你控制被子被你盖着,这样就是正转.

         而实际生活中,你不可能每次睡觉都买一床新被子,所以,你的做法就是整个柜子,然后,买好一床被子,放在里边,你要睡觉的时候,拿出被子来用,放被子的柜子就是一个容器(相当于IOC容器),然后,你每次都是盖这个被子,就是使用盖这个方法,而不是每次买一床新被子.被子的其他都交给柜子来控制,这就是反转.

        2、依赖注入

        依赖:两个对象互相关联,不是我调用你,就是你调用我.

        注入:就是可以被调用的意思(对象A的使用,需要依赖到对象B,IOC框架创建一个这样的对象,将创建好的对象的调用返回给对象A(返回给对象A调用就是注入)

        3、总结

        依赖注入是手段,控制反转是目的.(控制反转与依赖注入其实描述的都是一回事,简单的说就是要打破一个类与另一个类的紧耦合(耦合就是一个类跟另一个类依赖,解耦就是解除这种依赖),只不过这2个术语描述的角度不同罢了.)

    二、常见相关问题

         1、IOC容器控制了什么

          IOC容器控制对象B(对其创建,运行,销毁,回收,即生命周期控制)

         2、哪些方面反转了?

           对象的控制权限,从对象A(资源的使用者)控制,转移给IOC框架操作.

         3、反转有什么作用?

           反转简化代码,去重

         4、什么是IOC容器

           完成一系列IOC核心功能的组件的集合叫做IOC容器

  • 相关阅读:
    Python中的生成器与yield
    【爬虫系列】(一)最简单的爬虫
    【刷题笔记】--lintcode木头加工(java)
    使用TaskManager爬取2万条代理IP实现自动投票功能
    开源任务管理平台TaskManager介绍
    数据字典生成工具之旅系列文章导航
    使用工具安装,运行,停止,卸载Window服务
    Quartz Cron表达式 在线生成器
    Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle
    .net core2.0下Ioc容器Autofac使用
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/13624132.html
Copyright © 2011-2022 走看看