随笔 - 3, 文章 - 0, 评论 - 16, 引用 - 0
数据加载中……

简单说两句IoC和狗皮膏药

最近对相对论的大无畏的批判好象又热闹起来了。既然批判当然不是简单质疑,而是满嘴枪药。比如干脆宣称“相对论纯属臆想与臆造,客观上是在玩弄科学、愚弄 社会凡人。”。。。 “爱因斯坦创立相对论学说时完全抛弃了作为科学家应有的真诚和严谨,且完全脱离了实践,无法自圆其说,是臆想的产物,把严肃的科学作为谋求名利的工具。而 后,更多的人或出于迷信权威,或为了个人私利,把相对论吹到神乎其神的地步,从而造成理论物理和哲学的沦丧,使伪科学盛行。”

本IT民工无意于对相对论的事狗拿耗子说三道四,不过到联想起IT愤青大骂IoC框架“压根不用去论证”就是狗皮膏药。与那些粗通初中代数加点科普常识就大无畏地挑衅相对论的唐基歌德们如出一辙的是,对IoC框架荒唐可笑的谩骂也是基于“IoC就是策略模式”这种对IoC和策略模式两者均既不知其然,更不知所以然的无知无畏。

策略模式(strategy pattern)和IoC是垂直的。前者是一种OO拆分模式,探讨的是特定情况下的特定OO拆分法则(分离算法或策略)。后者则关注的是OO整合手段,考虑的是将依任何法则拆分的部件集成配置一体。把策略模式说成是IoC,就好比把冯诺伊曼架构说成是集成电路。。。。

传 统组件框架要求组件从框架配置表(registry)中解析自己的配置和依赖关系并自己负责整合。IoC框架则是由框架反向控制组件,直接由框架进行配置 和依赖搭接。通过IoC配置搭接的组件可以是因为各种各样原因被OO分解的。包括算法策略(策略分解),事件发布定阅,客户服务,实现与适配器,等各种模 式。而不是仅仅限于更不是等同于策略模式。PocoCapsule中,这些组件分解模式都有支持的应用例子。 如 果IoC等同于策略模式,那么以同样的理由,IoC也等同于发布订阅模式,等同于适配器模式,等等等等在。另一方面,策略模式也不依赖于更不等同于 IoC。虽然应用程序完全可以用IoC直接注入策略实现(GoF书中的例子),但采用policy注册表(registry)来动态添加,删除,解析,替 换策略或算法的应用实现也很普遍。如果策略模���等同于IoC,以同样理由,策略模式也可以等同于directory lookup, singleton factory,等等等等许多其他模式。
 

posted on 2008-03-31 14:42 kjin101 阅读(1598) 评论(2)  编辑 收藏 引用

评论

# re: 简单说两句IoC和狗皮膏药  回复  更多评论   

广义上的策略模式和控制反转的应用领域不一样的嘛~但如果硬把策略模式的实现称作依赖倒置也不为过.
2008-03-31 22:41 | 杜中伟

# re: 简单说两句IoC和狗皮膏药  回复  更多评论   

策略模式当然可以用IoC实现,我原贴里说的很清楚。但这只是策略模式一个侧面(解析策略object)的一种具体实现方式而已。策略模式完全可以用非IoC方式(比如directory lookup,singleton factory等等)来达到相同的实质目的(将算法或策略分解为独立object)。如果仅仅因为某一侧面的众多可能实现中的一种特定实现正好用到了IoC就将策略模式说成是IoC,那硬把冯诺伊曼架构和集成电路说成是一回事也不为过。

另一方面,IoC也可以被用来搭接很多以其它非策略模式分解的的应用。比如,IoC可以用来实现事件发生器和事件观测器的搭接,Object适配器的搭接,等等。如果IoC等同于策略模式,那么以同样的理由,IoC也等同于发布订阅模式,等同于适配器模式,等同于等等等等其他更多设计模式。。。最后硬把策略模式,IoC,以及发布订阅,适配器,等等等等通通混为一谈。。。是否也同样不为过呢?
2008-04-01 10:00 | kjin101

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理