我有一个单身课
public class Singleton {
static Singleton instance;
public static Singleton getInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
考虑公共函数方法()在类 Singleton 中定义。
在单例类中调用方法的最佳方法是:
Singleton。方法() - 静态调用
的方法或
Singleton.getInstance.method() - 方法不是静态的吗?
答案 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
类
答案 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();
应该是正确的格式