具体解析看下面代码:
public class Singleton {
//用private确保在外部不能new一个实例,确保实例只能由单例类自己创造
private Singleton() {
}
//private确保只能通过getInstance()获得该单例类的实例
//因为下面要在静态方法getInstance()中用instance,所以要将其声明为静态变量
private static Singleton instance;
//public确保外界可以获得该单例类的实例
//static申明为静态方法,确保外界可以通过类名直接调用该方法,顺利创建该单例类的实例
//synchronized确保在多线程环境下单例模式还能正常工作
public static synchronized Singleton getInstance() {
//确保只会创造一个实例
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
至于单例模式的各种实现方法我这里就不写了,网上很多。。。。
关于单例模式的一些应用可见这篇文章:单例模式的常见应用场景