单例在很多地方都用的到,例如购物车之类的,我现在就把单例实现类写一下供大家交流
我把类的初始话顺序说一下,大家就能很快理解了
(单个类)1.静态变量2.静态初始化块3.变量4.初始化块5.构造器
(继承类)1.父类-静态变量2.父类-静态初始化块
3.子类-静态变量4.子类-静态初始化块
5.父类-变量6.父类-初始化块7.父类-构造器
8.子类-变量9.子类-初始化块10.子类-构造器
饱汉模式下的单例:
public class Singleton1 {
private Singleton1(){
}
private static Singleton1 instance = new Singleton1();
public static Singleton1 getInstance(){
return instance;
}
}
这样在类的初始化时就产生了一个单例对象,之后不再产生了!
/**
* @author Administrator
*懒汉模式单例的实现
*/
public class Singleton {
public Singleton() {
}
private static Singleton instance= null;
public static synchronized Singleton getInstance(){
if (instance==null) {
instance = new Singleton();
}
return instance;
}
}
初始化类的时候只有在调用getInstance的时候才会产生一个新的实例
synchronized是必须要加的不然的会造成线程不安全!
提倡用第一种创建方式
我把类的初始话顺序说一下,大家就能很快理解了
(单个类)1.静态变量2.静态初始化块3.变量4.初始化块5.构造器
(继承类)1.父类-静态变量2.父类-静态初始化块
3.子类-静态变量4.子类-静态初始化块
5.父类-变量6.父类-初始化块7.父类-构造器
8.子类-变量9.子类-初始化块10.子类-构造器
饱汉模式下的单例:
public class Singleton1 {
private Singleton1(){
}
private static Singleton1 instance = new Singleton1();
public static Singleton1 getInstance(){
return instance;
}
}
这样在类的初始化时就产生了一个单例对象,之后不再产生了!
/**
* @author Administrator
*懒汉模式单例的实现
*/
public class Singleton {
public Singleton() {
}
private static Singleton instance= null;
public static synchronized Singleton getInstance(){
if (instance==null) {
instance = new Singleton();
}
return instance;
}
}
初始化类的时候只有在调用getInstance的时候才会产生一个新的实例
synchronized是必须要加的不然的会造成线程不安全!
提倡用第一种创建方式