`

转载一篇超牛的控制反转解释

阅读更多
A Quick Guide to Dependency Injection of IoC

鄙人今日研习Spring核心技术,乃百思不得起解;遂上大号排解郁闷。然一串掷地有声后茅塞顿开。不敢腋着藏着若小人状独享,故散尽思想普济天下,拯救计民于水火之中。



The following article contains coarse,disgusting idea and due to its content it is should not be viewed during the meal time or formal occasion.



       什么是依赖注入?书中曰:控制反转Inversion of Control)的一种实现。这明摆了是不想让我等技术民工读懂。作者没有继续丧心病狂,继而给出一个小示例。我对着琢磨,以为原理并没有如此这般玄乎。先将此例改写为我理解的一个例子。


 Interface Asshole{

              void public makeShit( );

}

 

public class ShitContainerObject{

       private Asshole asshole;

       

       public ShitContainerObject(Asshole asshole){

              this.asshole = asshole;

}

 

public void toMakeShitByEating(){

       asshole.makeShit();

}

}

 

public class Vegetarian implements Asshole{

       public void makeShit(){

              //…素食者实际拉屎的过程

       }

}

 

public class MeatEater implements Asshole{

       public void makeShit(){

              //…肉食者实际拉屎的过程

       }

}


     


您没看懂代码无所谓,因为本来就没打算让您直接看代码就能明白什么是依赖注入,否则我掰活的东西和教科书没两样。

为了能将晦涩难懂的理论写成耳熟能详的大白话,我出此下策。举这个例子不是为了腻歪您,主要是拉屎这个赋有使命感的行为肩负起了解释技术原理的重担。

首先,马桶是一个大大的容器,能够容纳各种秽物。而且您应该明确这个观点:这个技术的根本目的就是让您和您拉的屎能够轻松的进行分离,不至于在您排泄的过程中拉的满裤子都是而无法清理,否则您就得通过其他手段,例如拿纸重新擦屁股,或者漂洗内裤乃至丢弃这样不可重用,且浪费资源的方法来解决拉屎难,且大便与屁眼儿无法及时分离的困难。



解决这个问题的根本思想就是设计一个接口――屁眼儿,让您进食之后能够及时将大便排泄出体外。所以,我们进行消化这个动作是依赖于屁眼的,同时在另一方面,在马桶容器这边,需要提供一个能够接纳屁眼放置在其内的空间,以便能够通过存储大便的这个方法来获得对人拉屎这个动作的控制,人就是这样依赖于屁眼将大便注入到马桶里的。



上文的最后一句话,基本上属于依赖注入这项技术的一个论证。



如果我们把目光放的更宽泛些,您也许会发现,人吃进去的是蔬菜,是鱼肉,怎么到马桶这样一个输出端就变成屎了呢,按道理,蔬菜和鱼肉排泄在马桶里还应该是原来的东西啊?如果您仔细理解了:容器本身是不对接口有任何实现的,即马桶本身不具备能将屎变成蔬菜和鱼肉的功能。您发散下思维也许看的更清楚。农民伯伯会把这些屎尿播撒在田地里,然后它们滋润着蔬菜苗们的生长,给周围鱼塘供以新鲜食料…从这个角度来看,注意,农民伯伯也有屁眼,所以他肯定实现了屁眼这个接口。具体将屎尿转化为蔬菜鱼肉这个过程其实是由农民伯伯来具体实现的,我们所要做的就是将其过程逆化,其结果就是有人在一边种,有人在另一边吃,本来农民是天下的主人,我们这帮孙子在人头上吃喝拉撒,您瞧,这在根本意义上不就是自然而然的控制反转么?


还有一点注意,屎和蔬菜鱼肉在根本上没有任何区别,只是对于人这一端来说需要加以判断;识别出来它们是蔬菜鱼肉才敢吃,否则吃到屎就该报错了。这点和Spring技术本身没有任何出入。



如果上述简明教程让您发毒誓以后不想学习Spring技术了,我只能说,压根就不是我的错…
分享到:
评论

相关推荐

    c# 依赖注入 控制反转

    IoC,即"Inversion of Control"(控制反转),是软件工程领域的一个重要概念,特别是面向对象编程中的一个关键设计原则。从字面上理解,IoC指的是程序运行时控制流的方向发生了“反转”。传统的程序设计中,应用程序...

    spring 控制反转的模拟程序

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性是依赖注入(Dependency Injection,简称DI),也常被称为控制反转(Inversion of Control,简称IoC)。控制反转是一种设计模式,它改变了传统应用程序...

    Spring_01_入门篇_依赖注入(控制反转)_XML

    在`Spring_01_入门篇_依赖注入(控制反转)_XML`中,我们可以看到一个或多个XML配置文件,它们定义了bean的定义,包括bean的类名、属性以及它们之间的依赖关系。例如: ```xml ``` 在这个例子中,`exampleBean`...

    Spring IOC 控制反转

    控制反转是一种设计思想,在Spring框架中主要表现为一种对象管理模式,也称为DI(Dependency Injection)。传统的程序设计中,通常是调用者主动去创建依赖对象或者调用依赖对象的方法,而在Spring框架中的IOC容器则...

    控制反转应用,模拟Hibernate

    在编程领域,控制反转(Inversion of Control,简称IoC)是一种设计模式,它将对象的创建和管理责任从应用程序转移到框架或容器中。在Java编程中,IoC通过依赖注入(Dependency Injection,DI)来实现,使得组件之间...

    spring技术--IOC控制反转课件.ppt

    其中,IOC(Inversion of Control,控制反转)是Spring的核心特性之一,它改变了传统对象创建和管理的方式,实现了依赖注入(Dependency Injection)。本课件主要介绍了Spring中的IOC原理、特点以及如何使用。 ### ...

    控制反转和容器(二)

    控制反转(Inversion of Control,简称IoC)是一种设计模式,它在软件工程中被广泛应用于构建可扩展、松耦合的系统。这个概念的核心是将对象的创建和依赖关系的管理从应用程序代码中剥离出来,转交给一个外部的实体...

    Android中的“控制反转”(下)

    本篇文章主要探讨的是Android中如何实现和应用控制反转,以及通过提供的Demo2_IOC源代码来深入理解这一概念。 控制反转的核心思想是解耦,它将组件之间的依赖关系从组件内部移出,交由一个统一的管理者(通常是一个...

    Spring_01_入门篇_依赖注入(控制反转)_ANN

    Spring的核心特性之一是依赖注入(Dependency Injection,简称DI),也称为控制反转(Inversion of Control,简称IoC)。 **依赖注入 (DI) 和 控制反转 (IoC)** 依赖注入是Spring的核心设计原则之一。它是一种设计...

    控制反转_百度百科1

    控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI...

    spring 控制反转和依赖注入.docx

    Spring 控制反转和依赖注入基础知识详解 Spring 框架是 Java 企业级开发的轻量级开发框架,于 2003 年创建,主要用于解决企业级开发的复杂性。其主要优势在于分层架构,允许在不同层级中使用一个组件(其他框架)...

    asp.net mvc4控制反转

    在ASP.NET MVC4框架中,控制反转(Inversion of Control,简称IoC)是一种设计原则,它改变了传统程序设计中对象之间的依赖关系,使得应用程序的组件可以更加灵活、可扩展。控制反转的核心理念是将对象的创建和管理...

    Ioc(控制反转)的例子

    "IoC(控制反转)"是软件设计模式中的一个重要概念,它在现代软件开发,特别是.NET框架下的C#编程中占据了核心地位。控制反转的主要思想是将对象之间的依赖关系从代码内部转移到外部容器,从而使代码更加灵活、可...

    Spring 控制反转 依赖注入

    在软件开发中,控制反转(Inversion of Control,简称IoC)是一种设计原则,它将对象的创建和管理权从代码中剥离出来,转交给一个外部容器(如Spring框架)。通过这种方式,开发者可以专注于业务逻辑,而不是对象的...

    helloIoc.zip spring ioc控制反转简单测试代码

    Spring框架的核心特性之一就是依赖注入(Dependency Injection,简称DI),它通过控制反转(Inversion of Control,简称IOC)实现。这个"helloIoc.zip"压缩包包含的是一组用于演示Spring IOC基本概念和使用的测试...

    IOC控制反转

    本文文档中有 控制反转 DI依赖注入,希望可以给大家在技术上有一点的帮助

    学习Spring笔记_IoC(控制反转)简介

    在软件开发中,IoC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理责任从代码中剥离出来,交由一个容器来处理。Spring框架是Java平台上的一个核心组件,其核心特性就是依赖注入...

    Spring.NET控制反转(IoC)和面向切面(AOP)的容器框架

    Spring.NET 控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理...

    Java spring webmvc如何实现控制反转

    控制反转(Inversion of Control,IoC)是软件设计中的一种原则,指的是在软件设计中,将控制权从对象中抽象出来,交给第三方来管理。Java Spring WebMVC 中的控制反转主要通过依赖注入来实现的。 在 Java Spring ...

Global site tag (gtag.js) - Google Analytics