單例模式(Singleton):保證一個類僅有一個實例,並提供一個訪問它的全局訪問點
UML:
JAVA:
public class SingletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1.equals(s2));
}
}
class Singleton{
private static Singleton instance;
private Singleton(){}//private構造方法,堵死外界利用new創建實例對象
public static Singleton getInstance(){
if (instance == null) instance = new Singleton();
return instance;
}
}
//多線程時的單例
class SingletonThread{
private static SingletonThread instance;
private SingletonThread(){}
public static SingletonThread getInstance(){
if (instance == null){
synchronized (Singleton.class){
if (instance == null) {
instance = new SingletonThread();
}
}
}
return instance;
}
}
//靜態內部類單例
class Singleton2{
private static class Inner{
private static final Singleton2 singleton2 = new Singleton2();
}
private Singleton2() {}
public static final Singleton2 getInstance(){
return Inner.singleton2;
}
}