最近我在项目中尝试使用Ninject时遇到了难题。
我经过各种问题的反复探讨,逐步优化我的设计和架构,以支持依赖注入。
经过数小时的搜索,我发现了Justin Etheredge的文章,其中提到了他的静态DIFactory类。
我现在想知道,使用静态DI工厂是否不像魔法一样让事情变得简单?
我想听听在实际应用中使用静态DI工厂的优缺点。
此外,IoC和DI是相同的吗,还是它们非常相似,尽管有些差异?
最近我在项目中尝试使用Ninject时遇到了难题。
我经过各种问题的反复探讨,逐步优化我的设计和架构,以支持依赖注入。
经过数小时的搜索,我发现了Justin Etheredge的文章,其中提到了他的静态DIFactory类。
我现在想知道,使用静态DI工厂是否不像魔法一样让事情变得简单?
我想听听在实际应用中使用静态DI工厂的优缺点。
此外,IoC和DI是相同的吗,还是它们非常相似,尽管有些差异?
静态 DI 工厂是服务定位器, 而服务定位器是一种反模式,因为它会使你的代码难以理解:
NHibernante.ISessionFactory
就存在这样的问题,因为它没有适当的连接字符串就无法实例化,并且一旦创建,就无法更改其连接字符串。作为解决方法,可以提供一个IDbConnection
,但会失去持有对象跟踪信息的第二级缓存,该信息贯穿整个ISession
生命周期。然后,需要用户提供凭据,现在ISessionFactory
依赖关系不再是问题。 - Will Marcouiller