正好我是读你的译作:2004.3 程序员文章。其中有大段的IOC和service locator的比较(做出一个选择)。我想fowler名气固然大,我等也不必迷信其说法。
spring 包含了很多模块,我澄清一下我的提法“struts+POJO与struts+spring IOC 的区别在哪里呢?”
究竟好在哪里?不能说因为是IOC,所以好!
我看到的一些理由是:
1.易于测试(针对ejb、jndi的难于测试)
2.可以动态配置,替换部件。
3.不用写singleton
但我感觉这几条都不足以说明非IOC不可,理由如下:
1 易于测试很好,但采用service locator也是可以测试的,据板桥说ejb也能测试(我不熟悉ejb)。
2 只要是对接口编程,就可以做到部件替换。
3 减少singleton很好,但效益有限。
引入框架的副作用是有几点:
1 学习成本,你必须学习配置文件的写法,相当于学习一个小的语言。(pico container不需要写配置文件)
2 依赖性
3 复杂性
市场上总是充满了吆喝,小品叫呼悠,英语叫hype,有意的无意的。Rod Jonson是一个优秀的设计者,但他也是要谋生的人,不是神,中国人有造神这个爱好。
每当有人向你推销万能药的时候,一定要打起精神多一些独立的批判性思考。
最后,我写这些只是为了学习探讨,如果你觉得很肤浅可以不予理睬,但不要开口就教训人,不管你名气多大,请用事实说话!