
【springboot】什么是依赖注入
发布日期:2021-05-09 17:21:33
浏览次数:21
分类:精选文章
本文共 1545 字,大约阅读时间需要 5 分钟。
控制反转与依赖注入:小明的手机之旅
第一章:小明的手机
小明是一个热爱生活的程序员,他有一部神奇的iPhone6,依赖它完成每天的工作和娱乐。为了实现“知乎、玩王者、抢红包”的目标,他编写了一个简单的PHP类。
class Ming extends Person { private $_name; private $_age; public function __construct() { $this->_name = '小明'; $this->_age = 26; } function read() { (new iPhone6())->read($this->_name); // 逛知乎 } function play() { (new iPhone6())->play($this->_name); // 玩王者农药 } function grab() { (new iPhone6())->grab($this->_name); // 抢红包 }}
第二章:小明的忧伤
随着时间的推移,小明的iPhone6越来越慢,电池寿命也变差了。他不得不换手机,但发现自己过度依赖iPhone6,改造过程痛苦又低效。
为了减少对iPhone6的依赖,小明决定改用依赖注入的方式管理手机。但他仍然难以摆脱对手机的控制欲。
第三章:造物主的智慧
为了帮助小明摆脱对手机的控制,造物主提出“控制反转”的概念。他将手机的控制权交给了一个第三方容器,通过依赖注入实现解耦。
class Ming extends Person { private $_name; private $_phone; public function __construct($phone) { $this->_name = '小明'; $this->_age = 26; $this->_phone = $phone; echo "小明起床了\n"; } function read() { $this->_phone->read($this->_name); // 逛知乎 } function play() { $this->_phone->play($this->_name); // 玩王者农药 } function grab() { $this->_phone->grab($this->_name); // 抢红包 }}
第四章:小明的感悟
经过改造,小明的生活变得简单了。他不再控制手机,而是让造物主来管理手机。每天换手机,享受便利的同时,也学会了如何更好地设计软件系统。
第五章:小明的困惑
小明在一次阅读中遇到了一个技术文章,里面提到“依赖注入”和“控制反转”。他觉得自己对这些概念还不够理解,决定深入研究。
通过阅读和实践,小明逐渐理解了依赖注入的真正含义。他开始用_IOC容器管理手机,实现了真正的控制反转。
术语解释
- 控制反转(IOC):将对象的控制权从被控制对象转移到第三方容器。
- 依赖注入:通过容器将依赖关系注入到对象中,实现松耦合设计。
通过小明的故事,我们可以看到,软件设计中的依赖管理至关重要。通过控制反转和依赖注入,我们可以减少耦合,提高系统的可维护性和扩展性。
发表评论
最新留言
很好
[***.229.124.182]2025年04月18日 06时53分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Cocos2d-x 3.2键盘操控列表页的初步实现
2019-03-07
制作横版游戏KillBear第9课:暂停层+屏蔽下层监听
2019-03-07
OpenGL ES VAO、VBO、EBO、FBO、PBO、TBO、UBO
2019-03-07
Redis-day2-五种数据结构类型与数据持久化AOF+RDB
2019-03-07
IOS开发Swif笔记13-初始化
2019-03-07
IOS开发Swift笔记16-错误处理
2019-03-07
element 表单验证(二)整个表单验证
2019-03-07
element 修改多选框为单选
2019-03-07
C语言数组
2019-03-07
linux内核中结构体的赋值方式
2019-03-07
【电商吧 - 4】电商场景数值计算那些坑
2019-03-07
Java 天气预报WebService
2019-03-07
Spring中bean的加载过程
2019-03-07
简述SSH
2019-03-07
mysql里Date类型的处理
2019-03-07
MySQL索引实现
2019-03-07
redis中RDB和AOF的区别
2019-03-07
内核线程、轻量级进程、用户线程的区别和联系
2019-03-07
Docker容器开机自动启动(在宿主机重启后或者Docker服务重启后)
2019-03-07