单例模式

单例模式 | 菜鸟教程 (runoob.com)

定义:一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式(通过静态方法返回),可以直接访问,不需要实例化该类的对象。

注意:

  • 1、单例类只能有一个实例。
  • 2、单例类必须自己创建自己的唯一实例。
  • 3、单例类必须给所有其他对象提供这一实例。

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

关键代码:构造函数是私有的。

实现单例模式的两种方式:

饿汉式

线程安全

public class Singleton {
    //随着类的加载而创建
    private static Singleton instance = new Singleton(); 
    private Singleton (){
        //空参构造器
    } 
    public static Singleton getInstance() { 
        return instance; 
    } 
}       

 

懒汉式

线程不安全

 

public class Singleton {  
   
    private static Singleton instance;  
    
    private Singleton (){}  
  
    public static Singleton getInstance() {  
    //在对象被创建之后->方法被使用之后创建
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
}

 

posted @ 2022-02-10 13:40  啊好没吃呢  阅读(24)  评论(0编辑  收藏  举报