`
Inmethetiger
  • 浏览: 108752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式之单例模式

阅读更多

作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

懒汉式:

1:私有的构造方法

2:定义一个方法来为客户端提供类实例  

3:这个方法需要定义成类方法,也就是要加static  

4:定义一个变量来存储创建好的类实例  

5:因为这个变量要在静态方法中使用,所以需要加上static修饰  

6:判断存储实例的变量是否有值  

 

package singleton;

public class Singleton {
	
	/**
	 * 4:定义一个变量来存储创建好的类实例  
	 * 5:因为这个变量要在静态方法中使用,所以需要加上static修饰  
	 * */
	private static  Singleton instance;

	/**
	 * 1:私有的构造方法
	 * */
	private Singleton() {

	}

	/**
	 * 2:定义一个方法来为客户端提供类实例  
	 * 3:这个方法需要定义成类方法,也就是要加static  
	 * */
	public static Singleton getInstance(){
		//6:判断存储实例的变量是否有值  
		if(instance==null){
			instance = new Singleton();
			return instance;
		}
		return instance;
	}
	
	
	
}
   

饿汉式:

 

package singleton;

public class Singleton {
	// 4:定义一个静态变量来存储创建好的类实例
	// 直接在这里创建类实例,只会创建一次
	private static Singleton instance = new Singleton();

	// 1:私有化构造方法,好在内部控制创建实例的数目
	private Singleton() {
	}

	// 2:定义一个方法来为客户端提供类实例
	// 3:这个方法需要定义成类方法,也就是要加static
	// 这个方法里面就不需要控制代码了
	public static Singleton getInstance() {
		// 5:直接使用已经创建好的实例
		return instance;
	}
}
两者的区别在于懒汉式是在构造方法中实例化对象。而饿汉式则是在属性上直接初始化
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics