C# 使用全局变量比使用单例更好
我有一个队列,应该由一些类使用 所有类都是相同的队列,所以我想也许我会把队列作为静态成员放在静态类中。 但我知道这不是很好的OOP(尽管我认为singleton是设计模式之一) 所以我想要一个实现这个队列的想法,C# 使用全局变量比使用单例更好,c#,oop,design-patterns,singleton,C#,Oop,Design Patterns,Singleton,我有一个队列,应该由一些类使用 所有类都是相同的队列,所以我想也许我会把队列作为静态成员放在静态类中。 但我知道这不是很好的OOP(尽管我认为singleton是设计模式之一) 所以我想要一个实现这个队列的想法, 我需要它是唯一的,并且对所有类都是可访问的,因为所有类都使用相同的队列。我不会将它设为单例,因为这对程序中的所有类和层都是全局可见的。为需要访问队列的部分提供对队列本身的引用。因此,您可以清楚地确定软件的哪个部分可以访问它 我在软件项目中有过非常糟糕的经历,其中有太多的单例,也就是“X
我需要它是唯一的,并且对所有类都是可访问的,因为所有类都使用相同的队列。我不会将它设为单例,因为这对程序中的所有类和层都是全局可见的。为需要访问队列的部分提供对队列本身的引用。因此,您可以清楚地确定软件的哪个部分可以访问它
我在软件项目中有过非常糟糕的经历,其中有太多的单例,也就是“XyzManager”,因为它们是从软件的任何部分以一种疯狂的方式使用的。尽可能避免使用全局变量和单例。最好在对象中引用它们应该访问的内容。我不会将其设置为单例,因为这将对程序中的所有类和层都是全局可见的。为需要访问队列的部分提供对队列本身的引用。因此,您可以清楚地确定软件的哪个部分可以访问它
我在软件项目中有过非常糟糕的经历,其中有太多的单例,也就是“XyzManager”,因为它们是从软件的任何部分以一种疯狂的方式使用的。尽可能避免使用全局变量和单例。最好在对象中引用它们应该访问的对象。您所说的是,您的类共享一些上下文,而该上下文包含一个队列。我们可以说,您的类依赖于此上下文 单例模式不是一个好主意的原因是它使用全局(静态)上下文作为公共上下文。这一限制有两个原因:
另一个更高级的解决方案是使用依赖项注入框架。您所说的是,您的类共享一些上下文,而该上下文包含一个队列。我们可以说,您的类依赖于此上下文 单例模式不是一个好主意的原因是它使用全局(静态)上下文作为公共上下文。这一限制有两个原因:
另一个更高级的解决方案是使用依赖项注入框架。是否使用IoC容器?创建包含队列(或ConcurrentQueue)的单音类,并公开类中所有需要的功能。是否使用IoC容器?创建包含队列(或ConcurrentQueue)的单音类我认为DI框架没有你提出的解决方案复杂。当然这是一个需要掌握的新概念,但它产生了更干净的代码。我认为DI框架没有您提出的解决方案复杂。当然这是一个需要掌握的新概念,但它产生了更清晰的代码。