单例模式

有些对象我们只需要一个,比如:
配置文件、工具类、线程池、缓存、日志对象等

单例模式:保证某个应用中某个实例有且只有一个

单例模式的恶汉模式实现:

public class Singleton {
	//1.将构造方法私有化,不允许外部直接创建对象
	private Singleton(){		
	}
	
	//2.创建类的唯一实例,使用private static修饰
	private static Singleton instance=new Singleton();
	
	//3.提供一个用于获取实例的方法,使用public static修饰
	public static Singleton getInstance(){
		return instance;
	}
}
单例模式的懒汉模式实现:
public class Singleton2 {
	//1.将构造方式私有化,不允许外边直接创建对象
	private Singleton2(){
	}
	
	//2.声明类的唯一实例,使用private static修饰
	private static Singleton2 instance;
	
	//3.提供一个用于获取实例的方法,使用public static修饰
	public static Singleton2 getInstance(){
		if(instance==null){
			instance=new Singleton2();
		}
		return instance;
	}
}

二者的区别:饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全
                     懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全

测试方法:

public class Test {
	public static void main(String[] args) {
		//饿汉模式
		Singleton s1=Singleton.getInstance();
		Singleton s2=Singleton.getInstance();
		if(s1==s2){
			System.out.println("s1和s2是同一个实例");
		}else{
			System.out.println("s1和s2不是同一个实例");
		}
		
		//懒汉模式
		Singleton2 s3=Singleton2.getInstance();
		Singleton2 s4=Singleton2.getInstance();
		if(s3==s4){
			System.out.println("s3和s4是同一个实例");
		}else{
			System.out.println("S3和s4不是同一个实例");
		}
		
	}
}




阅读更多
个人分类: design patterns
想对作者说点什么? 我来说一句

单例模式单例模式单例模式

2011年07月31日 467KB 下载

研磨单例模式研磨单例模式

2010年12月15日 123KB 下载

单例模式(讲解单例模式)

2011年01月18日 317KB 下载

Java单例模式(DOC)

2009年10月21日 91KB 下载

php单例模式和工厂模式

2009年05月22日 54KB 下载

设计模式之单例模式

2017年12月01日 9KB 下载

JAVA单例模式

2013年11月14日 46KB 下载

线程安全的单例模式

2012年12月07日 345KB 下载

单例模式详解~~单例模式详解~~

2011年03月01日 39KB 下载

研磨设计模式之单例模式.pdf

2011年11月16日 311KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭