当前位置:首页 > 开发 > 编程语言 > 设计模式 > 正文

设计模式——单例模式

发表于: 2014-06-30   作者:ayaoxinchao   来源:转载   浏览:
摘要: 定义          Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”   分析          从定义中可以看出单例的要点有三个:一是某个类只能有一个实例;二是必须自行创建这个实例;三是必须自行向系统提供这个实例。   &nb

定义

 

       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;
	}

}

 

设计模式——单例模式

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号