单例模式 //TODO

什么是单例模式?


单例模式有啥好处?有啥坏处?


单例模式有啥使用场景?


单例模式的实现

lazy(懒汉式)

/**
 * Description :懒汉式 ( 线程不安全 )
 * 单线程下使用,如果是多线程下使用,在if条件判断的时候可能产生多个实例对象
 * @author: manji
 * 2018/6/3 11:21
 */
public class SingletonOne {

    private static  SingletonOne singleton;
    /**
     * 私有空构造函数
     */
    private SingletonOne() {}

    public static  SingletonOne getSingleton(){
        if(singleton == null){
            singleton = new SingletonOne();
        }
        return singleton;
    }
}

null

/**
 * Description :懒汉式 ( 线程安全 )
 * 通过加syn锁的方式 去控制线程安全
 * @author: manji
 * 2018/6/3 17:00
 */
public class SingletonTwo {

    private static  SingletonTwo singletonTwo;

    private SingletonTwo() {}

    public static synchronized  SingletonTwo getInstance(){
        if (singletonTwo == null){
            singletonTwo = new SingletonTwo();
        }
        return singletonTwo;
    }
}

null

/**
 * Description :懒汉式加载 ( 同步代码块加载模式 )
 *
 * @author: manji
 * 2018/6/3 18:39
 */
public class SingletonThree {

    private static SingletonThree singletonThree;

    private SingletonThree(){}

    public static  SingletonThree getInstance(){

        if ( singletonThree == null){
            synchronized(SingletonThree.class){
                singletonThree = new SingletonThree();
            }
        }
        return singletonThree;
    }
}

hungry(饿汉式)        


/**
 * Description :饿汉式 ( )
 * 在类创建的时候就创建 静态变量 然后可以直接通过静态方式 去掉用获得单例对象
 * @author: manji
 * 2018/6/3 18:12
 */
public class SingletonOne {

    private SingletonOne(){}

    private static final SingletonOne singletonOne =  new SingletonOne();

    public static SingletonOne getInstance(){
        return singletonOne;
    }
}

null

/**
 * Description :饿汉式 静态代码块初始化类
 *
 * @author: manji
 * 2018/6/3 18:59
 */
public class SingletonTwo {

        private static SingletonTwo singletonTwo;
        static {
            singletonTwo = new SingletonTwo();
        }
        private SingletonTwo(){}

        public static SingletonTwo getInstance(){
            return  singletonTwo;
        }
}











猜你喜欢

转载自blog.csdn.net/lizhi1817/article/details/80559603