美文网首页
单身狗模式

单身狗模式

作者: sunboximeng | 来源:发表于2018-12-24 21:20 被阅读12次

当一个类的所有属性和方法都是静态的时候,比如说是一个工具类,这个类就可以写成单例模式。
懒汉法、饿汉法都是一种工厂模式,因为不用new而创建了对象。

饿汉法:私有属性、构造,并且立即new出对象对属性进行初始化。

  • 所有的事情都在一开始完成,所以在获得对象的时候,不必像懒汉那样讨论是不是第一次创建。因此,如果没有高效的判断策略,懒汉模式会因为每次都判断是不是首次创建,而效率低下。
public class Singleton {   
    private static Singleton = new Singleton();
    private Singleton() {}
    public static getSignleton(){
        return singleton;
    }
}

懒汉法

  • 私有属性、构造,在静态方法里面对属性进行初始化。
  • 考虑线程安全:synchronize(类锁)+ volatile
    • 把所有线程安全的关键字都用上了:一个保护方法,一个保护变量。
    • 用不了对象锁,因为对象还没有被创建出来
  • 性能优化:每次调用getSingleton()方法,都必须在synchronized这里进行排队,而真正遇到需要new的情况是非常少的。在加锁前多进行一次null检查就可以减少绝大多数的加锁操作,执行效率提高的目的也就达到了(所以第一个null检查是为了避开加锁操作,第二个null检查是为了判断是不是第一次创建对象)。
public class Singleton {
    private static volatile Singleton singleton = null;
 
    private Singleton(){}
 
    public static Singleton getSingleton(){
        if(singleton == null){  // 避免不必要的加锁操作
            synchronized (Singleton.class){
                if(singleton == null){  // 判断是不是第一次创建对象
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }    
}

相关文章

  • 单身狗模式

    当一个类的所有属性和方法都是静态的时候,比如说是一个工具类,这个类就可以写成单例模式。懒汉法、饿汉法都是一种工厂模...

  • 单身狗

    我是一只单身狗 没人爱的单身狗 我是一只单身狗 没人疼的单身狗 我是一只单身狗 注定单身的皮球 我是一只单身狗 但...

  • 你爱自己那么多 难怪你是单身狗

    情人节来袭,江湖两大门派—单身狗和CP帮风云再起。随着单身狗门派发展的日益成熟,他们逐渐摒弃了以自嘲为主的防御模式...

  • 单身狗:总有蝴蝶属于你

    文:清蓝 1 *大功率虐狗模式开启​ 前几天七夕,单身狗们纷纷表示被虐得很惨。 为了掩饰尴尬,只得开启自嘲模式。 ...

  • 并没有什么卵用

    群里单身狗居多。德明分享了知乎一个对备胎的讨论,单身狗们也顺便开启了自嘲模式。居然用备份比喻了男女间的微妙关系,不...

  • 没有爱情?没关系,单身的好处多着呢

    ​ 七夕越来越近了,在爱河里挣扎的恋人们又可以开启虐单身狗模式。不过讲真,单身狗们也许并不是很想陷入爱河,毕竟,单...

  • 婚姻模式里的单身狗

    婚前我们的恋爱谈得很草率,除了上床能彼此共同达到高潮的默契之外,其余能聊到一起的几乎很少。 从一线到一个正在发展中...

  • 狗年之单身狗之生无可恋-数码绘画

    狗年之单身狗之生无可恋01 狗年之单身狗之生无可恋02 狗年之单身狗之生无可恋03 狗年之单身狗之生无可恋04 狗...

  • 单身狗才有的乐趣

    点进来你就输了,单身狗没有乐趣 点进来你就输了,单身狗没有乐趣 点进来你就输了,单身狗没有乐趣 言归正传,单身狗有...

  • 单身狗们都有硕大的心灵

    不要总说单身狗被虐,单身狗脆弱。其实恋爱狗心灵才瘦小呢。

网友评论

      本文标题:单身狗模式

      本文链接:https://www.haomeiwen.com/subject/vaktlqtx.html