单例模式是一种常用设计模式。该类只有一个实例,而且该类自行创建实例。
很多时候,服务器都只需要一个全局对象,这样方便协调系统的整体行为。比如系统的配置文件,系统只需要一个单例对象读取加载,其他对象只需要通过该单例对象获取配置信息。这样方便在复杂模式下对系统配置的管理。
java中常用单例模式:
public class Singleton(){
private final static Singleton INSTANCE=new Singleton();
private Singleton(){}
//公开的,静态工厂方法
public static Singleton getSingleton(){
return INSTANCE;
}
}
这种方法,在类自身被加载是INSTANCE就已经实例化了,会提前占用资源。
另一种常用模式:
public class Singleton(){
private final static Singleton INSTANCE=null;
private Singleton(){}
//公开的,静态工厂方法
public static Singleton getSingleton(){
if(null==INSTANCE){
synchronized(Singleton.class){
INSTANCE=new Singleton();
}
}
return INSTANCE;
}
}
这里需要加上线程锁,来避免生成多个实例。
singleton还有其他实现形式,在这里就不一一例举了。