单例模式——饿汉和懒汉模式

饿汉模式

public class LazySingleton {

    //懒汉式单例模式

    //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢

    private static LazySingleton intance = null;//静态私用成员,没有初始化

   

    private LazySingleton()

    {

        //私有构造函数

    }

   

    public static synchronized LazySingleton getInstance()    //静态,同步,公开访问点

    {

        if(intance == null)

        {

            intance = new LazySingleton();

        }

        return intance;

    }

}

  • 私有构造函数常用于两个场景
    • 用在单例模式中,使得该类在其他类中无法被实例化
    • 用在工具类中,防止用户滥用该类,到处实例化。
  • 通过公开访问时,才构造实例。一种“懒实例化”。加载时快,实例化时慢

 

 

饿汉模式

public class EagerSingleton {

    //饿汉单例模式

    //在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

   

    private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化

   

    private EagerSingleton()

    {

        //私有构造函数

    }

   

    public static EagerSingleton getInstance()    //静态,不用同步(类加载时已初始化,不会有多线程的问题)

    {

        return instance;

    }

}

  • 加载时就实例化好,调用时只返回去就行。

猜你喜欢

转载自blog.csdn.net/fantalee/article/details/80287052