设计模式:实际的软件开发中,问题处理的总结经验
23种设计模式:
分类:
- 创建型:如何创建对象
- 关系型:对象多了,对象之间的依赖关系如何处理
- 功能型:有对象了,如何去做功能
单例设计模式:
保证一个类的对象 唯一性
- 私有构造方法
- 在本类的成员位置,创建出自己类对象
- 提供公共方法,返回创建的对象
-
单例模式之饿汉式
package shejimoshi;
/**
* 单例模式之饿汉式
* 单例模式在Java的java.lang.Runtime中
*/
public class Single {
//私有构造方法
private Single(){}
//创建自己的类对象
private static Single s = new Single();
//一个公共的方法,返回本类的对象
public static Single getInstance(){
return s;
}
}
-
单例模式之懒汉式
/**
* 单例模式之懒汉式--对象的延迟加载
* 在多线程并发情况下有安全隐患
* 当一个线程进入方法,判断s不为空,在没有new Single的时候,cpu调用其他线程也判断s
* 就会出现多次new对象的情况
*/
public class Single{
//私有构造方法
private Single(){}
//创建自己的类对象
private static Single s = null;
//返回本类对象
public static Single getInstance(){
if(null == s){
s = new Single();
}
return s;
}
}
改进
/**
* 单例模式之懒汉式--对象的延迟加载
* 安全的高效的应用
* 加同步保证安全
* 双重if提高程序的执行效率
*/
public class Single{
//私有构造方法
private Single(){}
//创建自己的类对象
private static Single s = null;
//返回本类对象
public static Single getInstance(){
if(null == s){
synchronized (Single.class) {
if(null == s){
s = new Single();
}
}
}
return s;
}
}