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; } }