单例模式的共性:
那就是这个类没有自己的状态,换句话说,这些类无论你实例化多少个,其实都是一样的,而且更重要的一点是,这个类如果有两个或者两个以上的实例的话,就会产生程序错误或者与现实相违背的逻辑错误。
单例模式的特点:
1,单例类只能有一个实例
2,单例类必须是自己创建自己的唯一实例
3,单例类必须给所有其他对象提供这一实例
单例模式的三种方式:
饿汉方式,线程安全,但效率低,一开始就要new一个对象
public class Singleton{
private Singleton(){}
private static final Singleton instance =new Singleton();
public static Singleton getInstance(){
return instance;
}
}
饱汉方式,多个线程访问时会是不安全的,可能会产生多个实例
public class Singleton{
private Singleton(){}
private static Singleton instance;
public static Singleton getInstance(){
if(instance==null)
instance=new Singleton();
return instance;
}
}
同步方式
public class Singleton{
private Singleton(){}
private static Singleton instance;
public static synchronized Singleton getInstance(){
if (instance==null)
instance=new Singleton();
return instance;
}
}