前几天查看了一些Java代码,我看到了以前看不到的东西,并且有些困惑。部分代码如下所示:
public class PreferredAlternateProxy {
...
private static PreferredAlternateProxy instance;
...
public static PreferredAlternateProxy getInstance(){
if(instance == null)
createInstance();
return instance;
}
private static synchronized void createInstance(){
if(instance == null)
instance = new PreferredAlternateProxy();
}
}
声明与公共类相同的类的静态属性的目的是什么?在什么情况下这有用?
使第二种方法(createInstance())同步的目的是什么?
答案 0 :(得分:1)
有一些类似设计模式的功能可以告诉您有效编写代码的方法。您提供的示例称为 Singleton 。此模式的目的是创建一个以及该类的唯一一个实例。它需要:
示例:
public class Singleton() {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
以上示例称为延迟初始化,因为在您第一次调用getInstance()
之前,不会创建该实例。
下面的示例显示早期初始化,它会在类加载到内存中时创建实例。
public class Singleton() {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
答案 1 :(得分:0)
您的问题中的代码是实现Java Singleton Pattern。
希望这有助于您更好地理解它。
干杯!