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

设计模式-单例模式

时间:2015-09-07 14:18:07      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

单例模式是设计模式中相对简单的一个模式,主要用于保证程序中只存在一个类的实例,所以称为单例。

这一点和枚举类很相似,枚举类是存在有限个数的类的实例,在极端情况下,即枚举的有限个数为1,则就是单例模式。

下面介绍单例的两种方式:

  • 懒汉式:顾名思义,类加载的同时创建类的实例
  • 饿汉式:调用方法时才创建实例,存在线程安全的问题。
// 饿汉式
public class Singleton {

    // 1.私有化构造函数
    private Singleton(){
    }
    // 2.内部创建实例,并私有化
    private static Singleton instance = new Singleton();
    
    // 3.设置get方法,允许外部创建实例,并设置成static,相应的成员变量也声明为static
    public static Singleton getInstance(){
        return instance;
    }
}

有以下注意点:

  1. 构造函数一定是需要private的,如果不,则会暴露给其他对象调用,那就不可能是单例了。
  2. 实例只能在内部创建
  3. 需要提供方法,将实例对外暴露,则一定是static,显然这个方法只能是类调用的。
//懒汉式
public class Singleton1 {

	private Singleton1(){	
	}
	
	private static Singleton1 instance = null;
	
	public static Singleton1 getInstance(){
		// 一般情况下不创建,只有在在调用并且instance为null的情况下才会创建
		// 可能会存在线程安全的问题
		if(instance == null){
			instance = new Singleton1();
		}
		return instance;
	}
}

  与饿汉式区别就是实例创建的时机。

设计模式-单例模式

标签:

原文地址:http://www.cnblogs.com/the-world-wang/p/4788583.html

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