一.描述
Singleton(单例)是设计模式的一种,为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要用途是保证某个很占系统资源的类,在同一时间只能拥有一个的情况。
例如:一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;
一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。
二.单例模式的主要特点:
1.某个类只能有一个实例;
2.必须自行创建这个实例;
3.必须自行向整个系统提供这个实例。
三.简单的具体实现:
第一种:懒汉式 (线程不安全)
public class SingletonDemo {
private static SingletonDemo single = null;
//私有的构造方法,无法主动实例化这个类
private SingletonDemo(){}
//静态工厂方法 通过getInstance得到具体的单例对象
public static SingletonDemo getInstance(){
if(single == null){
single = new SingletonDemo();
}
return single;
}
}
第二种 懒汉 线程安全
package com.hjh.Singleton;
/**
*
* @author Administrator
* 懒汉式单例 线程安全
*把构造方法private 无法主动实例化Singletondemo类
*通过getInstance 实例化对象
*/
public class SingletonDemo {
private static SingletonDemo single = null;
private SingletonDemo(){}
//静态工厂方法
public static synchronized SingletonDemo getInstance(){
if(single == null){
single = new