无节操地重新认识多态和IoC
起源
源自一则微博:
详情戳这里
刚转这篇微博的时候, 确实只意识到它用了多态特性.
在自己尝试写一个 Python 版的时候, 才意识到其实这里面更多的在表达 IoC 的设计思路
IoC 简介
IoC
的全称是 Inversion of Control
译过来就是控制返转.
酷壳有一个比较好的例子, 我这里就不重复造轮子了.
无节操的例子
这里我们详细谈一下起源里的例子是怎么回事:
妹子与汉子约会, 会因为汉子的种类(高富帅或diaosi)采取不同行动.
一般的理解思路就是妹子在做选择
, 也就是控制权在妹子手里.
这样如果用代码表示的话可能就是下面这样
而 IoC 的理解思路却是这样的:
控制权其实在
hanzi
这边, 妹子对汉子的表达是相同的, 但因为hanzi
的不同而产生了不同结果而已
用代码来表达就是这样
Meizi
这边的代码是不是就变得非常干净了, 那汉子在 chu 之后的结果就不在妹子这里控制了.
至于发生了什么, 我们来看一下 Hanzi
们的具体实现
看, 结果的不同是因为 Hanzi
自己的属性, 而不是妹子的选择.
这就是 IoC 的本质了1.
-
其实是把妹的本质吧, 喂!!↩