单例模式
一、饿汉式1
class Bank {
private Bank ( ) {
}
private static Bank instance = new Bank ( ) ;
public static Bank getInstance ( ) {
return instance;
}
}
二、饿汉式2(静态代码块)
class Hospital {
private Hospital ( ) {
}
private static Hospital instance = null;
static {
instance = new Hospital ( ) ;
}
public static Hospital getInstance ( ) {
return instance;
}
}
三、懒汉式(线程安全、效率高)
class School {
private School ( ) {
}
private static School instance = null;
public static School getInstance ( ) {
if ( instance == null) {
synchronized ( School. class ) { }
if ( instance == null) {
instance = new School ( ) ;
}
}
return instance;
}
}
四、枚举类法
class SingletonObject {
private SingletonObject ( ) {
}
private enum Singleton{
INSTANCE;
private final SingletonObject instance;
Singleton ( ) {
instance = new SingletonObject ( ) ;
}
private SingletonObject getInstance ( ) {
return instance;
}
}
public static SingletonObject getInstance ( ) {
return Singleton. INSTANCE. getInstance ( ) ;
}
}