欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式一之单例模式 博客分类: 设计模式 设计模式javasingleton 

程序员文章站 2024-03-24 08:16:04
...
一直想总结一下设计模式,因为设计模式是个抽象的东西,非常容易遗忘,只要不断的总结才能深入了解它们,下面我就从简单的单例模式开始总结吧!

在一些项目中,我经常看到一些人乱用单例模式,或者用的不好。单例模式有以下特点:

1,单例类有且只有一个自身向其他对象提供的实例。

2,单例对象必须自己创建这个实例。


单例类一般有两种写法:
1,饿汉式:

 
   
   package singleton;

public class Singleton {

	/**
	 * 饿汉式获取对象实例
	 */
	private static  Singleton instance = new Singleton();
	
	/**
	 * 私有构造子
	 */
	private Singleton(){
		
	}
	/**
	 * 外部对象唯一获取示例的方法
	 * @return
	 */
	public static Singleton getInstance(){
		return instance;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Singleton instance = Singleton.getInstance();

	}

}


  


二:懒汉式
 package singleton;

public class LazySingleton {

	 
	private static  LazySingleton instance = null;
	
	/**
	 * 私有构造子
	 */
	private LazySingleton(){
		
	}
	/**
	 * 外部对象唯一获取示例的方法
	 * 此处用synchronized来防止多线程环境下对象被多次实例化的情况
	 * @return
	 */
	public synchronized static LazySingleton getInstance(){
		if(instance==null)
			instance = new LazySingleton();
		return instance;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		LazySingleton instance = LazySingleton.getInstance();

	}

}



总结:饿汉和懒汉各有优点。饿汉式在自己被加载时就已经实例化了,而懒汉式则在第一次调用它的实例化方法时才会实例化。饿汉式是以空间换时间,懒汉式是以时间换空间。编程时一般我喜欢用饿汉式,不光是因为饿汉式简单,还由于饿汉更适合java。