CodeCampServer 源代码包含一个通用的StaticFactory。
我推测这是框架如何与依赖注入良好配合的机制的关键部分。
其子类使用它的 DefaultUnconfiguredState 来提供对它们自己的默认未配置状态的静态访问,依赖解决机制可以用工作的东西代替它。
我找不到任何有关此的文档...
书上有很好的解释吗?(我正在等待亚马逊的送货......)
...或者其他人可以提供一个很好的评论这是什么以及我是否明智地采用这种模式(如果它是一个......)?
更新
由于 Jeffrey Palermo 回答了这个问题,我看到在 MVC2 in Action 的(正在进行的)手稿中,使用用于定位存储库以保持域层无知的工厂讨论和说明了这种模式/风格持久性问题。(见第 23 章)。
默认情况下,使用此工厂会引发异常:
“如何创建存储库的知识不属于工厂。这个工厂仅代表返回存储库的能力”
该示例可以使用几种机制之一来初始化存储库接口的具体实现。在书中的示例中,为了简单起见,他们选择不使用 IOC 容器,并在某些启动逻辑中明确提供它。
“重要的是,核心项目和 UI 项目都不应引用基础设施项目或本质上纯粹是基础设施的库。我们将 NHibernate 完全放在一边,这样应用程序的其余部分就不会关心数据访问正在发生”
关于这一新章节中示例代码的最后一点要注意的是,工厂不再是静态的(至少就面向外部的接口而言不是)。
更新 2
巴勒莫先生在博客上写了更多关于这种特殊风格的抽象工厂(参见 OrderShipperFactory 的实现)。
我也可以考虑“手动依赖注入”(鲍勃叔叔)。
更新 3 - 2016 年 3 月
这里还有另一个例子,尽管 Jeffrey 明确表示这是演示代码,并且注释表明这将在 Mark Seeman 所称的组合根中进行配置(即在应用程序启动时)
我在 Jeffrey 的文章“洋葱架构:第 4 部分 - 四年后”中发现了这一点