PicoContainer疑惑:又一个反模式

PicoContainer似乎简单,用活了象遭罪,Ioc容器改变了很多以往编程习惯。

我在我的程序中使用了很多registerComponentInstance(Object key, Object componentInstance),但是不小心看到作者的又一个大声吆喝,这是反模式的。

http://www.picocontainer.org/Instance+Registration

我有些不明白了,我看到很多著名开源代码都是这么做的,特别是Jetspeed2 echo等几个开源,不知有谁清楚?

我明白,是我理解有误,如果直接注册实例,那么相当于没有使用Ioc的依赖寻找,应该注册Class。

其实模式与反模式是相互交杂,相互融合的,有时也随着人的理解而改变,用好了,自然就是OO的高手,用差了,呵呵,也就成了反模式的典型。其实反模式的概念和目的也就是希望人不要犯经验主义,其实很多人学习模式,最大的用途就是去套模式,发现一个问题,根本不去探讨和理解问题的实在,就只是看套哪个模式更加合适。当经验永远都只是照搬,而不是理解用活的时候,反模式自然就出来了。

一般说来,在一个系统中用到了某些模式,绝对是正常的事情,也包括被许多人嗤之以鼻的singleton,factory method。但是,在一个系统大量的使用同一类模式,呵呵,一般说来就有问题了,因为有套模式的嫌疑。
所以,有很多人说做设计其实好简单,套模式就是,把23个设计模式背熟了,也就是像过去“学好数理化,走遍天下全不怕”一样。
只是很多人不理解,为什么要用这个模式,用它有什么问题和好处,而不用它又有什么问题和好处,能不能用其他的,是否根据环境和实际情况进行了修改。
当可以把上面的问题非常自信而又清晰的解析清楚的时候,那么,他就是一个不错的设计人员了。

这段见解非常精辟。

我理解作者提出那种写法是反模式,他的意思是:你已经在使用某种模式,各个部分学得很象,但是实际你并没有真正利用该模式的优点,所以也称为反模式或非模式,这种情况经常存在。

在一个系统中用到了某些模式,绝对是正常的事情,怕就怕东施效颦,这种也就反模式,或者说是伪模式。