今天從網上看到一個蠻好的Singleton模式的實現方式
下面是經典的實現方式,使用Lazy load方式。
public class Singleton ...{
static Singleton instance;
public static synchronized Singleton getInstance() ...{
if (instance == null)
instance == new Singleton();
return instance;
}
}
synchronized關鍵字加在getInstance上,也就是說每次調用getInstance都會收到synchronized的影響。
下面是Bob Lee想出來的一種新辦法。
public class Singleton ...{
static class SingletonHolder ...{
static Singleton instance = new Singleton();
}
public static Singleton getInstance() ...{
return SingletonHolder.instance;
}
}
這種方式更優雅,並且減少了synchronized的影響。