单例设计模式(懒汉式)(饿汉式)

单例设计模式

1、 作用:在应用程序中保证最多只能有一个实例

2、好处:

  2.1 提升运行效率

  2.2 实现数据共享  案例:application对象

3、懒汉式

  3.1 对象只有被调用时才去创建

  3.2 代理实例:

public class SingleTon {
    /**
     * 其他类不能通过new 实例化这个类对象
     * 
     * 对外提供访问入口
     */
    private void SingleTon(){}
    
    /**
     * 由于对象需要被静态方法调用,把方法设置为static
     * 
     * 由于对象是static,必须要设置访问权限修饰符为private。如果是public,就不执行访问入口
     * 
     */
    private static SingleTon sing;
    
    /**
     * 实例方法,实例方法必须通过对象调用
     * 
     * 设置方法为静态方法
     * 
     * 多线程访问下
     * 
     * @return
     */
    public static SingleTon getInstance(){
        //添加逻辑如果实例化过,直接返回
        if(sing==null){
                /**
                 * 多线程访问下,可能出现if同时成立的情况,添加锁
                 */
                synchronized (SingleTon.class) {
                    /**
                     * 双重验证
                     */
                    if(sing==null){
                        sing=new SingleTon();
                    }
                }
        }
        return sing;
    }
    
}

  3.3 由于添加了锁,所以导致效率低

4、饿汉式

  4.1 解决了懒汉式中多线程访问可能出现同一对象和效率低问题

public class SingleTon {
    private void SingleTon(){}
    //在类加载时进行实例化    不会出现多线程访问情况
    private static SingleTon sing =new SingleTon();
    public static SingleTon getInstance(){
        return sing;
    }
}

猜你喜欢

转载自www.cnblogs.com/axu521/p/10152124.html