java设计模式之单例模式

java设计模式之单例模式

一、概述

    1.1 简述

    单例模式是java23设计模式之一,分在创建模式上。主要用来处理一些重要的类,功能上在JVM上只有这个类的一个实例。例如:一个框架的配置文件和主要的逻辑处理类。

    1.2 特点

        a)单例类只能有一个实例。

   b)单例类必须自己创建自己的唯一实例。

   c)单例类必须给所有其他对象提供这一实例

二、实例

    2.1 饿汉设计模式:

        在class文件加载后直接new一个空间,后面无论用不用都不会被消失。典型的空间换时间

public class Hungry {
	/**
	 * @see 饿汉模式:直接在classloader的时候,就在堆上面创建实例。节约时间,但如果一直不掉用则浪费空间
	 */

	// 默认不可修改的静态引用。在解析了类的时候,直接new
	private static final Hungry hungryInstence = new Hungry();

	// 私有构成器、不可实例化(不能new)
	private Hungry() {

	}

	// static的方法、对外调用
	public static Hungry getInstance() {
		return hungryInstence;
	}
}

    2.2 懒汉设计模式:

        使用静态的方法来判定需不需要,new一个空间,如果不用static方法,则不创造空间。典型的时间换空间。

public class LazySingle {

	/**
	 * @see 懒汉模式:在需要的时候才会创建、可以当作是延迟加载
	 */

	// 唯一引用
	private static LazySingle lsingle = null;

	// 私有构造器、防止实例化
	private LazySingle() {

	}

	// 调用方法
	public static LazySingle getInstance() {
		if (lsingle == null) {
			synchronized (LazySingle.class) {
				if (lsingle == null) {
					lsingle = new LazySingle();
				}
			}
		}
		return lsingle;
	}
}

    2.3 内部类

public class InSingle {

	/**
	 * @see 利用内部类
	 */
	
	// 内部类也是延迟加载
	static class SingleHolder {
		static InSingle isingle = new InSingle();
	}

	public static InSingle getInstance() {
		return SingleHolder.isingle;
	}
}


你可能感兴趣的:(java单例模式)