什么是依赖注入?(听来的一个笑话)


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

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

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

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

周末了,祝大家吃好喝好拉好

转载于:https://www.cnblogs.com/yanbinboy/archive/2009/06/13/1502582.html

什么是依赖注入?(听来的一个笑话)相关推荐

  1. hutool的定时任务不支持依赖注入怎么办_设计一个任务调度算法,时间轮算法,比优先队列更高效...

    当年我还是个学生的时候,有一次去参加欢聚时代的一个面试,有一道面试题记忆尤新,让你来实现一个定时任务,你会怎么做?为了简化问题,我们只用考虑内存方案,不用考虑数据持久化. 数组法 最简单的,我们可以把 ...

  2. 又一个强大的PHP5.3依赖注入容器

    简单的服务容器 一个简单的 php 5.3 依赖注入容器. 项目地址:https://github.com/godruoyi/easy-container Why 目前比较流行的 PHP 容器: Pi ...

  3. .NET Core ASP.NET Core Basic 1-2 控制反转与依赖注入

    本节内容为控制反转与依赖注入 简介 控制反转IOC 这个内容事实上在我们的C#高级篇就已经有所讲解,控制反转是一种设计模式,你可以这样理解控制反转,假设有一个人他有一部A品牌手机,他用手机进行听歌.打 ...

  4. 控制反转_.NET Core ASP.NET Core Basic 12 控制反转与依赖注入

    本节内容为控制反转与依赖注入 简介 控制反转IOC 这个内容事实上在我们的C#高级篇就已经有所讲解,控制反转是一种设计模式,你可以这样理解控制反转,假设有一个人他有一部A品牌手机,他用手机进行听歌.打 ...

  5. [Z]依赖注入那些事儿

    写在前面的话 昨天在博客园上看到一篇博文,名为"什么是依赖注入?(来听一个笑话)"[点击这里访问].可以看出,作者是想以一种轻松幽默的方式对依赖注入的思想进行一个阐述.不过在读完文 ...

  6. 控制反转容器依赖注入模式(转)

    轻量级容器在Java社区近来可是风起云涌,这些容器能将来自不同项目的逐渐集结为一个内聚的应用程序.这些容器都是基于一个共同的模式,这个模式决定了容器如何完成组件装配,人们统称之为:"控制反转 ...

  7. 6. 以下耦合度中最松散的耦合是_Spring Java中的依赖注入,它是如何工作的?- 知识铺...

    知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停地来唤醒记忆深处的知识点. 一.Spring 框架 POJO Spring Framework是一个开源的应用程序框 ...

  8. [Android]使用Dagger 2进行依赖注入 - Producers(翻译)

    使用Dagger 2进行依赖注入 - Producers 原文:http://frogermcs.github.io/dependency-injection-with-dagger-2-produc ...

  9. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...

    在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...

最新文章

  1. 【camera】基于YOLO的车辆多维特征识别系统(车色,车品牌,车标,车型)与PYQT实现(课程设计)
  2. k8S中的MySQL如何扩容_Kubernetes的etcd多节点扩容实战技巧
  3. 关于软件外包的一些看法(转)
  4. 四则运算表达式求值(栈的应用)
  5. if、for、while、do while、switch (区别于if、while)解析
  6. css中的单位换算_金蝶ERP入门教程:动态换算率及辅助计量单位的应用
  7. lamp 安装 mysql_linux lamp之离线安装mysql
  8. [zt]OJ常见的Judge Status
  9. Java还有发展前景吗?现在该怎么去学习?
  10. ApacheCN Java 译文集 20210921 更新
  11. sessionFactory.getCurrentSession()的引出
  12. log4j配置详解(非常详细)
  13. 驱动蜂鸣器电路-可参考
  14. 单片机4x4矩阵键盘c语言,MSP430单片机控制LED数码管显示4X4矩阵键盘键值C语言程序...
  15. Word2013出现未响应的解决方法
  16. PC客户端中的网页----问题集合(未完待续)
  17. 软件测试怎么测微信朋友圈,面试题:软件测试,如何测微信的朋友圈?
  18. Dos窗口的打开与基本命令
  19. Redis和Memcached的区别
  20. 求知若饥,虚心若愚——Stay Hungry, Stay Foolish

热门文章

  1. zookeeper启动失败+jps中没有QuorumPeerMain
  2. ANSYS提取刚度矩阵
  3. 多进程fork()函数
  4. 深度学习(七)—— GAN
  5. 深度学习基础2(反向传播算法)
  6. linux实验五编程淮海工学院,实验一-LinuxC编程工具GCC和GDB.doc
  7. python代码删掉了几行怎么撤回_78行Python代码实现现微信撤回消息功能
  8. 为何2018年中国自然灾害损失大幅下降?官方回应
  9. Laravel核心代码学习--用户认证系统(基础介绍)
  10. 手把手教你查看android系统源码