我们可以通过将所有方法和变量声明为静态来创建单例对象吗?

时间:2012-01-09 09:51:58

标签: java

我知道如何通过声明其构造函数私有来创建单个对象。但我怀疑的是:我们可以通过将所有方法和变量声明为静态来创建单个对象。如果是这样,我们将面临哪些挑战?

4 个答案:

答案 0 :(得分:0)

通过将所有变量和方法声明为静态,您实际上将其设为而不是对象
它将类似于具有全局变量的c程序,而不是单例模式 - 非OOP风格!

你也将使这个类不可能实现任何接口[记住没有覆盖静态方法...],而不是非常OOP风格。

答案 1 :(得分:0)

执行此操作时,您可以根据需要创建任意数量的类实例,但基础内容将保持不变。

即使您不创建任何实例,属性仍将保留:因为静态元素是的属性,而不是对象

答案 2 :(得分:0)

我猜你是在不需要单身的情况下,因为几乎所有的方法都是静态的,即你不必在任何对象中保留任何状态......就像单身人士的设计一样。

singleton是一个提供静态方法的有状态对象,例如ConnectionPool的单例,它保留有关底层后端服务的信息。

所以,我要做的是决定是否需要保留一些共享状态才能执行你的方法。它将推动您的实施。

答案 3 :(得分:0)

如果声明类static的所有方法和变量,您仍然可以创建该类的任意多个实例。这些对象只有继承的方法和变量。但是所有新声明的方法和变量都是全局的。这与单例对象非常相似,但不一样。

E.g。假设您有一个实现Collection接口的单例类,而不是只有一个实例。但您可以自由地将它提供给需要集合实例的任何方法。当你把一个类中的所有东西都静态化时,这是不可能的。

使类成员静态意味着您不使用类作为类而是作为命名空间。