常用设计模式-单例的几种实现方式

来源:互联网 发布:网络商品交易 编辑:程序博客网 时间:2024/05/16 03:00

1.什么事单例模式?

&&:单例模式可以保证系统一个对象只有一个实例。如果希望在一个系统中只有一个对象实例,单例是不错的;

2.饿汉方式创建单例

/**

 * 饿汉模式  典型的以空间换时间的模式。 * Created by admin on 2017/2/27. */public class SingletonTest {    private final static SingletonTest s = new SingletonTest();    public static SingletonTest getS(){        return  s;    }    /**     * 一个私有的构造方法,使得外部对象无法创建实例。     */    private SingletonTest(){    }

3.懒汉方式创建单例

/** * 懒汉方式创建单例 * Created by admin on 2017/2/27. */public class SingletonTest2 {    private  static  SingletonTest2 s2 = null;    public  static  SingletonTest2 getS(){        if(s2==null){            return  new SingletonTest2();        }else {            return  s2;        }    }    private  SingletonTest2(){    }}

4.内部类方式实现单例

/** * 内部类方式保证单例 * Created by admin on 2017/2/27. */public class Singleton3 {    static  class SingletonHolder{        static Singleton3 s3 = new Singleton3();    }    public static  Singleton3 getS(){        return  SingletonHolder.s3;    }    private Singleton3(){};}

5.双重锁方式实现单例

/** * 双重锁解决了线程等待的问题 * Created by admin on 2017/2/27. */public class SingletonDouble {    private volatile  static  SingletonDouble sd = null;    public  static SingletonDouble getSd(){        if(sd==null){            synchronized (SingletonDouble.class){                sd = new SingletonDouble();                return  sd;            }        }else {            return sd;        }    }    private SingletonDouble(){    }}


1 0
原创粉丝点击