[Java] 关于DI(IoC)与Factory模式的替代关系

博客首页 » Java 关于DI(IoC)与Factory模式的替代关系

发布于 05 Feb 2015 12:53
标签 blog
最近考虑DI(IoC)与Factory模式的替代关系,查找到一些资料。

抽象工厂模式可以被DI(IoC)替换掉,这是显而易见的,而DI(IoC)的许多主要功能也可以用抽象工厂实现。那么是不是有一些等价性,又能不能替换呢。

stackoverflow的“Dependency Injection vs Factory Pattern”这个问答中,
http://stackoverflow.com/questions/557742/dependency-injection-vs-factory-pattern

最佳回答是这样的:
When using a factory your code is still actually responsible for creating objects. By DI you outsource that responsibility to another class or a framework, which is separate from your code.
即,当你使用factory的时候,依然是你自己的代码在负责生成object;而是用di的时候,是另外一个在你的代码外的class或者framework在负责。

也就是说,factory,特别是abstract factory与代码隔离得很好的时候,在这一功能上,二者是有替代性的。

在下面的两个帖子中,也有相应的描述。
http://tutorials.jenkov.com/dependency-injection/dependency-injection-replacing-factory-patterns.html
http://fanli7.net/a/ITxinwen/hulianwang/20111111/141472.html

实际上我想说的是,即使用spring的applicationContext.xml来表达,xml也是你的代码。而且可维护性不见得比java好,也不见得真与代码就分离了。这不禁让我想到,spring的java config,甚至是JSON,实际又回归了用语言本身来表达数据信息。对于代码开发者而言,在没有比这更直接的了。


本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。


系列文章

文章列表

  • Java 关于DI(IoC)与Factory模式的替代关系

这篇文章对你有帮助吗,投个票吧?

rating: 0+x

留下你的评论

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License