将琴存诗
人生 可以不要那么 耀 ,只需要有 一个  平凡的梦想  足以 。—— loveincode -_^ RSS
Fork me on GitHub

单例设计模式 Single

一些人总结出来用来解决特定问题的固定的解决方案。

 

  解决一个类在内存中只存在一个对象,想要保证对象的唯一。

    1 为了避免其他程序过多的建立该类对象。禁止其他程序建立该类对象。

    2 为了其他程序可以访问该类对象,在本类中自定义一个对象。

    3 方便其他程序对自定义类的对象的访问,对外提供一些访问方式。

 代码:

    1将构造函数私有化

    2在类中创建一个私有的本类对象

    3提供一个用类名调用的公有方法获取该对象。

  懒汉模式 – 通常被称为延迟加载。注意存在线程安全问题.

懒汉式的单例模式线程安全问题的解决方案:

    class Single{
    
    //声明本类的一个私有的成员变量
    private static Single single;
    
    //第一步 : 私有化构造方法
    private Single(){
        
    }
     //  第三步:提供一个公共的方法获取该类的实例对象
    public static Single getInstance(){
        if(single==null){
        synchronized (single) {            
                if(single==null){
                     single = new Single();
                }
            }
        }
        return single;
    }
}

饿汉模式

 

class Single {

    private static Single s = new Single(); // 恶汉式

    private Single() {

    }

    public static Single getInstance() {
        return s;
    }
}

 

posted @ 2016-03-31 21:20  loveincode  阅读(270)  评论(0编辑  收藏  举报
最简单即最美
有了信仰,自己要坚持努力 2017.07.09 21:34