在单例类中调用方法的最佳方法

时间:2014-02-25 10:06:14

标签: java singleton singleton-methods

我有一个单身课

public class Singleton {
static Singleton instance;
public static Singleton getInstance() 
{
    if (instance == null) 
    {
        instance = new Singleton();
    }
    return instance;
}

考虑公共函数方法()在类 Singleton 中定义。

在单例类中调用方法的最佳方法是:

Singleton。方法() - 静态调用

的方法

Singleton.getInstance.method() - 方法不是静态的吗?

7 个答案:

答案 0 :(得分:9)

对于单例类,没有使用静态方法,因为只有一个实例可用,并且每个伙伴都有相同的副本。

所以总是创建一个实例方法并调用:

Singleton.getInstance().method();

答案 1 :(得分:2)

如果您想使用Singleton模式:

public class Singleton {
    private static Singleton sInstance;

    public static Singleton getInstance() {
        if (sInstance == null) {
            sInstance = new Singleton();
        }

        return sInstance;
    }

    // Prevent duplicate objects
    private Singleton() {

    }

    public void method() {

    }
}

答案 2 :(得分:2)

单例模式允许您控制一个类存在的实例数量 - 即只有1.但是类本身仍然是一个普通的类,不应该知道它存在多少类,因此应该有正常实例方法。

使用static方法时,如果您想要更改该类的实例数,则会遇到可怕的问题。

使用单例或使用静态方法。

答案 3 :(得分:2)

首先,您应该确保已将Constructor声明为私有,以防止任何人调用它并再次重新初始化它。如下:

private void Singleton(){
    //Initialize your private data
}

第二次,直接调用static方法,如下所示:

Singleton.yourMethod();

第三:,非静态方法调用如下:

Singleton.getInstance().yourMethod();

以下是Singleton

Example

答案 4 :(得分:1)

在第一种情况下:

Singleton.method();

方法必须是静态的

在第二种情况下:

Singleton.getInstance().method();

该方法不是静态的。

所以这些在概念上是不同的

答案 5 :(得分:0)

  

Singleton.getInstance()方法();

更好,因为第一次调用时实例将为null,而实例仅在getInstance()中创建。

答案 6 :(得分:0)

您将getInstance()作为静态方法,并将method创建为非静态或实例方法。

因此,对于静态方法,可以使用Class.method_name格式,但是对于实例,需要创建方法对象。

可能不是那里显示的正确语法:

Singleton.getInstance().method();
Singleton obj = new Singleton();
obj.method();

应该是正确的格式