Class 静态类和方法坏吗?全球变量不受欢迎?

Class 静态类和方法坏吗?全球变量不受欢迎?,class,methods,static,Class,Methods,Static,我有一个具有数据库连接的应用程序,虽然我的数据库中显然存在与数据相对应的对象,但我发现我所有的数据处理方法都可能是静态的,因为我的类只是对数据进行操作并吐出一些东西,因此不需要对象的实例,不需要存储方法范围之外的任何内容。如果我能使一个方法或类成为静态的,我应该吗 我还为公共(单实例)“全局数据”使用了一个实用程序单例类。我想有一个好的设计,但这些都不赞成吗 让我举一个我正在做的例子。我使用静态方法从数据库中加载一些数据,将其放入Singleton类(自定义对象的列表)中的全局变量表中 所以我的

我有一个具有数据库连接的应用程序,虽然我的数据库中显然存在与数据相对应的对象,但我发现我所有的数据处理方法都可能是静态的,因为我的类只是对数据进行操作并吐出一些东西,因此不需要对象的实例,不需要存储方法范围之外的任何内容。如果我能使一个方法或类成为静态的,我应该吗

我还为公共(单实例)“全局数据”使用了一个实用程序单例类。我想有一个好的设计,但这些都不赞成吗

让我举一个我正在做的例子。我使用静态方法从数据库中加载一些数据,将其放入Singleton类(自定义对象的列表)中的全局变量表中

所以我的单身班有

List<MyCustomObject> SomeList
因此,上面的代码可能会将数据库中的一些记录加载到SomeList中,其中SomeList中的每个项都是MyCustomObject类型,它包含一条信息记录

这是一个很好的实现吗?你是这样编码的吗

然后在我的表示层中,我将调用另一个静态方法类,以从singleton类中获取所需格式的数据


感觉不太糟糕。但我真的无法用另一种方式思考如何做。请允许我为您介绍一篇关于此主题的优秀文章:


问题是调用
LoadData()
函数的需要不是不言而喻的。将您的情况与文章中描述的情况进行比较,我认为您会看到一些相似之处。

静态和单例在某种程度上是不受欢迎的。但这和用“但是”开始一个句子的方式是一样的——过度使用时很糟糕,但有时效果最好

在您的示例中,为什么有单独的类,一个是单例类,一个是静态类?单例在很多方面都等同于只有静态数据和方法的类。如果您已经有了一个单例,我建议您应该添加方法来将数据加载到它,而不是加载到一个单独的类中。如果(比如)所有存储的数据类型都有公用的实用程序代码,那么使用静态方法的类更合适


(另外,我也不会太担心什么是OOPey,什么不是OOPey。过度设计OOP原则的盲目服务可能是一个严重的问题,作为一个不得不涉猎Eclipse代码库的人来说…)单例是一个问题,而静态是另一个非常大的问题

不管是OOP还是非OOP,静态变量都有很多缺点,但编码的便利性很小

  • 无法确定准确的分配时间、使用寿命
  • 无法在多线程环境中正常工作
  • 计划扩展的未来问题

你问这是关于什么编程语言的?这里有一个关于单例/全局的很好的讨论:好的,是的,我认为这是给定代码的最大问题。
static void LoadData()
foreach(data in database something or other)
singletonClass.SomeList.Add()