Singleton模式為單態模式或者叫孤子模式,保證一個類只有一個實例,并提供一個訪問它的全局訪問點。
Singleton模式的使用范圍比較廣泛,對于一些類來說,只有一個實例是很重要的。比如,你要論壇中
的帖子計數器,每次瀏覽一次需要計數,單態類能否保持住這個計數,并且能synchronize的安全自動加
1,如果你要把這個數字永久保存到數據庫,你可以在不修改單態接口的情況下方便的做到。
下面是一個簡單的示例程序:
package Singleton;
public class TestSingleton {
private static TestSingleton testSingleton = null;
protected int count = 0;
public static synchronized TestSingleton getInstance(){
if( testSingleton == null)
testSingleton = new TestSingleton();
return testSingleton;
}
public void addCount(){
count ++;
}
public void showCount(){
System.out.println("count :"+count);
}
}
我們還可以在這個基礎上做一個擴展,如從上面例子中的TestSingleton類擴展出多個子類,在
getInstance方法中控制要使用的是哪個子類,具體實現代碼如下:
-----TestSingleton.java
package Singleton;
public class TestSingleton {
private static TestSingleton testSingleton = null;
protected int count = 0;
public static synchronized TestSingleton getInstance(){
if( testSingleton == null)
testSingleton = new SubTestSingleton ();
return testSingleton;
}
public void addCount(){
count ++;
}
public void showCount(){
System.out.println("TestSingleton count :"+count);
}
}
-----SubTestSingleton.java
public class SubTestSingleton extends TestSingleton{
public void showCount(){
System.out.println("SubTestSingleton count :"+count);
}
}
<以上為個人見解,歡迎大家評論!>