3种单例模式对比
模式一:
class Singleton2 {
?
?private Singleton2(){
?}
?
?private static Singleton2 instance;
?public static Singleton2 getInstance() {
??if(instance==null){
???instance=new Singleton2();
??}
??return instance;
?}
}
不用说,大家也知道,这种在单线程程序中是没什么问题的,但多线程程序中,则可能会创建出2个或多个对象.
模式二:
public class Singleton {
?
?private Singleton(){
??
?}
?private static Singleton instance =new Singleton();
?
?public static Singleton getInstance(){
??return instance;
?}
}
这种很显然没有前者的问题,也是值得推崇的方式.
模式三:
public class Singleton {
?private static class SingletonHolder {
??static Singleton instance = new Singleton();
?}
?public static Singleton getInstance() {
??return SingletonHolder.instance;
?}
}
这又是一种单例实现方式,但不太明白和模式二对比,那个更好一点???显然模式三多创建了一个对象.??疑问中