提供者模式是IOC的一种实现方式吗?

3
提供者模式是IOC的一种实现方式吗?如果不是,为什么?
(在阅读马丁·福勒关于IOC的文章时)
3个回答

7

在我看来,提供者模式是一种控制反转的形式。

我的理由是什么?

控制反转本质上是一个非常通用的概念,以至于马丁·福勒(Martin Fowler)谈到从命令行读取用户输入都是控制反转的一种形式

使用提供者模式时,当调用给定方法时,提供程序框架决定将使用哪个提供程序进行反转。例如,当您调用Membership.GetUser时,您的代码将控制权委托给提供程序框架,以确定要使用哪个成员身份提供程序。

正如福勒所说,“控制反转是框架的一个常见特征”,如果你想想,许多模式都涉及控制反转(例如策略模式)。我甚至可以说,多态性也是一种控制反转的形式(这一点我很乐意听到反驳的论据)。


0

我认为即使是这样,你也不应该“代替”使用IOC,否则你会错过很多东西,代码库也会变得混乱。IOC容器通常可以在代码中配置,这样更强大且易于维护,而提供程序模型必须在Web.Config中进行配置。

现在我正在考虑放弃使用提供程序模型,因为它似乎有些过度设计,而我正在使用IOC容器。

在我的博客文章中阅读更多内容-希望博客也能得到一些好的评论: http://healthedev.blogspot.com/2011/12/making-custom-built-applications.html


0

Spring使用BeanFactory及其具体实现,其中最重要的是ApplicationContext。不知道Guice是做什么的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接