单例模式(懒汉,饿汉)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式(懒汉,饿汉)相关的知识,希望对你有一定的参考价值。
Java中的单例模式一般分为懒汉模式和饿汉模式,懒汉模式只有用得到的时候对象才初始化,饿汉模式无论用得到与否,都先初始化。
懒汉模式在运行的时候获取对象比较慢(因为类加载时并没有创建对象实例),但是加载类的时候比较快(因为此时不创建对象实例),饿汉模式是在运行的时候获取对象快(因为加载类时就创建了实例对象),加载类的时候慢(此时还需要创建实例对象)。
单例模式的应用场合,有些对象只需要一个的时候。
作用:保证整个应用程序中某个实例有且只有一个。
饿汉模式:
class SingletonDemo{ /** *单例饿汉模式 */ //在单例类的内部声明一个自己本身的对象,并且初始化 private static SingletonDemo s = new SingletonDemo(); //私有化构造器 private SingletonDemo(){ } //获得单例的对象,必须static,不然无法调用该方法 public static SingletonDemo getSingletonDemo(){ return s; } public void eat(){ System.out.println("在吃饭"); } } class TestSingletonDemo{ public static void main(String[] args){ //使用类名调用get方法得到在单例类内部所创建的对象 /**使用类名时要确保get方法是static类方法,才可以使用类名调用方法, *使用类名调用方法,那就要调用类属性,也要是static修饰的属性 */ SingletonDemo s1 = SingletonDemo.getSingletonDemo(); s1.eat(); System.out.println(s1); SingletonDemo s2 = SingletonDemo.getSingletonDemo(); s2.eat(); System.out.println(s2); SingletonDemo s3 = SingletonDemo.getSingletonDemo(); s3.eat(); System.out.println(s3); } }
单例懒汉模式:
class Singleton{ /** *懒汉模式 */ //将构造方法私有化,不允许外面直接创建对象 private Singleton(){ } //声明类的唯一对象,使用private static private static Singleton s; //给外部提供一个可以获得对象的方法,使用public static public static Singleton getSingleton(){ if(s == null){ s = new Singleton(); } return s; } } class TestSingle{ public static void main(String [] args){ Singleton s = Singleton.getSingleton(); System.out.println(s); Singleton s1 = Singleton.getSingleton(); System.out.println(s1); Singleton s2 = Singleton.getSingleton(); System.out.println(s2); } }
以上是关于单例模式(懒汉,饿汉)的主要内容,如果未能解决你的问题,请参考以下文章