所谓的singleton指的是在整个webapplication的生命周期内,始终只有一个实例运行的设计模式,这种singleton模式,通常在外部环境和对象的属性相对较为稳定的条件下采用的模式,singleton模式可以节约资源,减少系统不必要的开销,因而最终可以提高系统的性能.
目前可以采用两种方式实现singleton模式,其共同点是把构造器都声明为private,并提供一个public static成员(成员方法或者成员变量),允许客户存取唯一一个实体.下面将具体介绍这两种实现singleton模式的方法:
Ø 方法一:把public static成员声明为final形式
例如:
public class SingletonClass{
public static final SingletonClass INSTANCE= new SingletonClass ();
private SingletonClass(){
}
}
注意上面的成员变量声明为final形式,这可以保证,构造SingletonClass实例时,始终是同一个实例,在用SingletonClass. INSTANCE调用构造器时只能调用一次,从而,这种方式最终保证了运行期内,只有一个实例产生.
Ø 方法二:用public static factory method实现singleton
例如:
public class SingletonClass{
private static final SingletonClass INSTANCE= new SingletonClass ();
private SingletonClass(){
}
public static SingletonClass getInstance(){
return INSTANCE;
}
}
这种方式可以用SingletonClass.getInstance()方法进行单实例的构造,这种方式采用getInstance方法进行单实例的构造,把构造器声明为private形式,避免客户从其它路径进行实例的构造.
在我们实际开发的过程中,在很多地方会用到单例模式,例如数据库链接池connection的读取,配置文件的读取等等,许多地方应该使用单例模式,以避免因实例的构造过多而造成程序整体性能上的损失