码迷,mamicode.com
首页 > 其他好文 > 详细

创建型模式之单例模式

时间:2015-08-13 22:26:48      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:设计模式   java   

      单例模式,英文原话为:Ensure a class has only one instance, and provide a gloabal point of access to it;即:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。


      单例模式的主要作用是:确保一个类只有一个实例存在。单例模式可以用在建立目录、数据库连接等需要单线程操作的场合,用于实现对系统资源的控制。


      单例模式又有两种表现形式:饿汉式单例,类加载时实例化对象;懒汉式单例,第一次引用时实例化对象。两种表现形式的代码比较:

public class Singleton {
	/*//饿汉式单例形式,类加载时初始化对象
	private static Singleton instance = new Singleton();
	//构造方法私有化,保证外部无法直接实例化
	private Singleton(){
		
	}
	//获得实例化对象
	public static Singleton getInstance(){
		return instance;
	}*/
	
	//懒汉式单例形式,第一次引用类时,进行对象初始化
	private static Singleton instance = null;
	//构造方法私有化,保证外部无法直接实例化
	private Singleton(){
		
	}
	/*
	 * 使用Synchronized,保证在多线程下之创建一个实例
	 */
	public static synchronized Singleton getInstance(){
		if(instance == null){
			instance = new Singleton();
		}
		return instance;
	}
}

      单例模式的优点:1、减少了内存的开支,特别是一个对象需要频繁的创建、销毁,而且创建或销毁的性能又无法优化时,单例模式的优势就会很明显;2、单例模式只生成一个实例,减少了系统的性能开销,当一个对象的产生需要比较多资源时,如读取配置、产生其他依赖对象时,则可以通过在启用时直接产生一个单例对象,然后永久驻留内存的方式解决;3、单例模式可以避免对资源的多重占用;4、单例模式可以在系统设置全局的访问点,优化和共享资源访问。


      单例模式的缺点:1、无法创建子类,扩展困难;2、对测试不利,在并发开发环境中,如果采用单例模式的类没有完成,是不能进行测试的;3、单例模式与单一职责原则有冲突。


      单例模式的使用场景:1、要求生成唯一序列号的环境;2、在整个项目中需要一个共享访问点或共享数据的;3、创建一个对象需要消耗的资源过多时;4、需要定义大量的静态常量和静态方法的环境。


相关博客连接

          设计模式第一课

          设计模式之设计原则学习


版权声明:本文为博主原创文章,未经博主允许不得转载。

创建型模式之单例模式

标签:设计模式   java   

原文地址:http://blog.csdn.net/yanglun1/article/details/47617563

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!