1 单例(Singleton)模式:单例模式确保某一个类只有一个 实例,而且该类只能是自己 实例化自己并向其他类公开 这个实例的对象创建 模式
采用单例模式的类:根据单例模式知道其要满足以下三点
1. 确保某一个类只有一个实例
2. 而且自己实例化
3. 并向其他类提供这个实例类 。
2 确保以上三点的所采用的编程策略
*
把构造方法声明为Private。确保只能由自己创建,避免外部创建实例或者被子类继承从而创造额外实例;
*
定义一个私有静态的该类的实例作为该类的数据域。确保一个类只能有一个实例;
*定义一个静态
工厂方法。外部类不能实例化一个该类的对象,所以只能用Static 的方法,提供给其他类调用,返回此单例类唯一的实例。
/**
//饿汉式 一开始就建立单例对象 需要就直接返回
private static Single instance=new Single();//静态实例变量
private Single(){}// 私有构造方法
public static Single getInstance(){//共有静态工厂方法
return instance;
}
*/
/**
//懒汉式 到需要时才创建
private static Single instance;
private Single(){}
public static Single getInstance(){
if(instance==null){
instance=new Single();
}
return instance;
}*/
//双重检查
private volatile static Single instance;
private Single(){}
public static Single getInstance(){
if(instance==null){
synchronized(Single.class){
if(instance==null){
instance=new Single();
}
}
}
return instance;
}
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}