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);
}
}
<以上为个人见解,欢迎大家评论!>