美文网首页
单例模式的两种方式

单例模式的两种方式

作者: onnoA | 来源:发表于2019-01-11 14:32 被阅读0次

单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式。
单例模式: 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。

  1. 饿汉式:
 public class Singleton{
    private final stiatic Singleton instance = new Singleton();
    private Singleton(){
    }
    public static Singleton getInstance(){
        return instance;
    }   
 }
优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。

缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例,
则会造成内存的浪费。

  1. 懒汉式
public class Singleton{
   private final static Singleton instance;
   private Singleton(){
   }
   public static Singleton getInstance(){
       if(singleton == null){
           instance = new Singleton();
       }
       return instance;
   }
}

这种写法起到了Lazy Loading的效果,但是只能在单线程下使用。如果在多线程下,
一个线程进入了if (singleton == null)判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,
这时便会产生多个实例。所以在多线程环境下不可使用这种方式。

相关文章

  • Swift的单例模式及如何处理并发访问

    Swift的单例模式 Swift有两种方式实现单例模式 1、全局常量 2、类型常量 处理单例模式的并发访问 1、多...

  • Python经典面试题21道

    1、Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模...

  • Python最经典面试题21道,必看!

    1、Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模...

  • Python 经典面试题

    1、Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模...

  • Python 经典面试题

    1、Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模...

  • 单例模式

    单例模式(饿汉式) 单例模式(懒汉式) 解决两种的弊端的单例模式(双锁)

  • 一套完整Python经典面试题,实力派,做内容不做标题党!

    文末含Python学习资料 1:Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例...

  • Java单例模式

    单例模式有很多种模式,饿汉,懒汉模式。项目中的单例需要处理多线程,所以选择以下两种实现方式。 关于volatile...

  • 单例模式

    单例模式 两种方式: 1.GCD方式 static id _instance; +(instancetype)sh...

  • 单例模式之枚举类enum

    通过枚举实现单例模式 枚举类实现单例模式的优点 对于饿汉式单例模式和懒汉式单例模式了解的同学,使用以上两种单例模式...

网友评论

      本文标题:单例模式的两种方式

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