最近发表的话题
最近发表的评论
  • Laravel 学习笔记 —— 神奇的服务容器 at 4年前

    写得很清晰,很容易懂!所以我愿意多说几句。

    如果 IoC 容器是像文章中写的一样,那么我觉得 IoC 容器就是多此一举。

    首先,我们把一个超人拥有多个超能力这个事实,改成了一个超人拥有一个超能力。姑且不论我们为什么需要那么多的超人,这样的事实只是把超能力群的复杂度转换到了超人群上面。这就毫无意义。

    第二,所谓的依赖注入也是一样,只是把复杂的配置从类里面转移到了类外面,并没有降低复杂度。要说降低,只是在代码的组织上进行了降低,而这个在类里面一样可以完成。而且,在某些时候,这样的操作需要编写更多的代码。

    第三,代码量没有降低,反而增多了。如果说通过反射可以做到某些自动化,那么,不用 IoC 容器也是一样可以做到的,而且能做得一样好。

    第四,重点来了,解耦!与其说解耦是为了避免改变一个类导致另一个类发生变化,不如说得更透彻一点,就是让两个不同的人来修改这两个类而互相不会影响————这是什么?不就是接口吗?

    在实际的开发中,我们会遇到一些现实中的对象,有些对象映射到程序中会变得非常复杂。我们会通过一些手段来拆分这些对象,以达到降低复杂度的目的。但是,这个降低复杂度(中间的某些手段,可以称之为解耦)是个有个度的,而我恰恰以为,IoC 容器跑得太远了。

    (软件开发界热衷于新名词的发明。很多概念本来都是很简单的,但是套上一些高大上的名词之后,反而变得云里雾里。这种情况,在设计模式这个领域,尤为泛滥。)