您的位置:首页 > 编程语言 > Java开发

Java设计模式----单例模式(Singleton)

2015-10-19 15:29 513 查看
1. 单例模式的概念

单例模式的意思就是一个类只有一个实例。单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。

2. 关键点:

1) 一个类只有一个实例

2)必须自行创建这个实例

3)自行向系统提供这个实例

3. 单例类所包含的关键要素:

1) 私有的构造方法 (避免在外部被实例化)

2) 指向自己实例的私有静态应用

3) 以自己的实例为返回值的静态的共有方法

4. 常用的几种实现方式:

一:懒汉式单例(类加载时不初始化)

/**
* 单例---懒汉式(线程安全)
* 类加载时不初始化,类加载速度快,运行时获取对象速度慢
* @author zqkj001
*
*/
public class Singleton {

public static  Singleton singleton=null;

/* private 构造方法,防止被外部实例化 */
private Singleton(){

}

/**
* 静态实例创建方法
* 使用synchronized关键字同步,确保多线程环境下线程安全
* @return
*/
public static synchronized Singleton getInstance(){
if(singleton==null){
return new Singleton();
}
return singleton;
}

}
二、饿汉式单例(类加载时初始化)

/**
* 单例---饿汉式
* 1、类加载时完成初始化,不会有线程问题
* 2、类加载时初始化,所以类加载速度慢,获取对象速度快
* @author zqkj001
*
*/
public class Singnalton1 {

public static Singnalton1 s=new Singnalton1();

/**
* 私有构造方法,防止被外部实例化
*/
private Singnalton1() {

}

public static Singnalton1 getInatance(){
return s;
}

}
三、使用内部类维护单例的实现

/**
* 单例--内部类维护单例的实现(线程安全)
* @author zqkj001
*
*/
public class Singalton2 {

private Singalton2() {

}

/**
* 使用内部类完成单例的实现
* 缺点:如果构造方法中抛出异常,则实例永远不会被创建
*
*/
private static class SingaltonFactory{
private static Singalton2 instance=new Singalton2();
}

public static Singalton2 getInstance(){
return SingaltonFactory.instance;
}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: