设计模式——单例模式

定义

 

       Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”

 

分析

 

       从定义中可以看出单例的要点有三个:一是某个类只能有一个实例;二是必须自行创建这个实例;三是必须自行向系统提供这个实例。

       实现角度看就是要有以下三点:一是类只提供私有的构造函数(方法);二是类定义中含有一个该类的私有静态对象;三是该类提供了一个共有的函数(方法)用于创建或获取它本身的静态私有对象。

 

动机

 

       1.节约内存

       2.避免当多个实例存在的时候,引起程序逻辑错误

 

实现1_懒汉方式

public class Singleton1 {
	
	private static Singleton1 singleton = null;
	
	private Singleton1() {
		
	}
	
	public static Singleton1 getInstance () {
		if (singleton == null) {
			singleton = new Singleton1();
		}
		return singleton;
	}

}

 

实现2_恶汉方式(线程安全)

public class Singleton2 {
	
	private static Singleton2 singleton = new Singleton2();
	
	private Singleton2() {
		
	}
	
	public static Singleton2 getInstance() {
		return  singleton;
	}

}

实现3_双重锁方式(线程安全)

public class Singleton3 {
	
	private static Singleton3 singleton = null;
	
	private Singleton3() {
		
	}
	
	/**
	 * 这个模式将同步内容下方到if内部,提高了执行的效率,
	 * 不必每次获取对象时都进行同步,只有第一次才同步,创建了以后就没必要了。
	 * @author Perlin
	 * @date 2014-6-30
	 * @return
	 */
	public static Singleton3 getInstance () {
		if (singleton == null) {
			synchronized (Singleton3.class) {
				if (singleton == null) {
					singleton = new Singleton3();
				}
			}
		}
		return singleton;
	}

}

 

你可能感兴趣的:(设计模式)