JAVA设计模式之单例模式

单例模式:

  就是整个程序有且仅有一个对象,本类负责创将自己的对象,同时确保只有一个对象被创建。核心结构中只包含一个被称为单例的特殊类。

具体实现

  1.类构造器私有化,使用private修饰,外部不能访问。

  2.持有自己类型的属性。使用private static 修饰。

  3.定义一个静态方法,用于返回唯一实例化对象。

 

懒汉式模式:

  特点:实现起来容易,当调用静态方法时创建对象,不会造成占用内存的情况,但是多线程并发不安全,单线程无影响

public class Singleton {  
    private static Singleton s=null;  
    private Singleton (){}  
  
    public static Singleton getInstance() {  
    if (s == null) {  
        s = new Singleton();  
    }  
    return s;  
    }  
}

饿汉式模式:

  特点:线程安全,但是一开始就初始化,占用内存,会造成资源的浪费。

public class Singleton {  
    private static Singleton s = new Singleton();  
    private Singleton (){}  
    public static Singleton getInstance() {  
    return s;  
    }  
}

 

双重锁模式:(使用双检查锁机制)

  特点:线程安全,延迟初始化,单例模式的最佳实现方式。效率高,线程安全,多线程操作原子性,高性能。

public class Singleton {  
    private static Singleton s=null;  
    private Singleton (){}  
    public static Singleton getSingleton() {  
    if (s== null) {  
        synchronized (Singleton.class) {  //在给当前线程加锁后,例行检查 s 是否被实例化
        if (s== null) { 
          s
= new Singleton();
        }
     }
  }
  
return s; }
}

 

posted @ 2020-06-01 10:06  Sprite码农  阅读(123)  评论(0)    收藏  举报