设计模式一之单例模式

一直想总结一下设计模式,因为设计模式是个抽象的东西,非常容易遗忘,只要不断的总结才能深入了解它们,下面我就从简单的单例模式开始总结吧!

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

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。

猜你喜欢

转载自chendajun.iteye.com/blog/1198148