当前位置: 首页 > 编程语言 > C#

DI和单例模式在一个实现中共享

时间:2023-04-10 17:30:16 C#

DI和单例模式我想使用WindsorIOC/DI框架重构一些代码,但我的问题是我有一些单例类和工厂模式类,我是不确定是否可以使用DI实现单例或工厂。有没有人有任何想法,如果可能的话,如何?Singleton设计模式与DI不一致。虽然可以打开一个Singleton以便DI和开/闭原则开始有意义,但这会使Singleton变得如此之多以至于它不再是一个单例。当您开始使用单例时,线程安全是一个大问题。最好简单地定义您的服务和类,而不用过多考虑它们的范围。如果您有一个要在多个消费者之间共享的对象,大多数DI容器都有单例生命周期的概念,它模仿了单例设计模式的优点而没有任何缺点。简而言之:单身人士是邪恶的,应该避免。另一方面,抽象工厂对于DI目的非常有用。你不这样做,你让IOC容器来做。在显式调用工厂以获取对象的单例实例之前,现在您可以让IOC容器为您创建对象图并将所有内容挂接到它所属的位置。容器确保您的单身人士是单身人士并充当工厂。如果你在谈论让工厂在运行时决定提供什么样的对象,那么DI不适用于那里,除非你可以让DI容器注入你想要的工厂并为你管理它们的范围。大多数现代依赖注入框架允许您指定它们是应该在应用程序(或请求)的生命周期内提供单个对象实例,还是在每个请求上创建一个新实例。您还可以在适当的时候使用DI框架来解决工厂的依赖关系(如果这就是您的意思)。如果工厂根据运行时数据选择子类,或者如果依赖对象需要创建许多IFoo实例,您可以这样做,在这种情况下,您可能会注入IFooFactory。以上就是C#学习教程的全部内容:DI与SingletonPattern一并实现。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: