单例模式
- 饿汉式
package com.hfview.designMode.signle;
/**
1. 饿汉式:就是在初始化成员变量的时候就获取实例对象
2. */
public class SignleMode {
private static SignleMode sm=new SignleMode();
public static SignleMode getInstance(){
return sm;
}
private SignleMode(){}
}
- 懒汉式
package com.hfview.designMode.signle;
/**
*懒汉式: 初始化成名变量的时候赋值为null,等需要的是时候在创建
*
*/
public class SignleMode2 {
private static SignleMode2 sm=null;
public static SignleMode2 getInstance(){
if(sm==null){
sm=new SignleMode2();
}
return sm;
}
private SignleMode2(){}
}
但是在多线程下,懒汉式会有问题
package com.hfview.designMode.signle;
/**
*懒汉式: 解决懒汉式多线程下的问题
*
*/
public class SignleMode3 {
private static SignleMode3 sm=null;
public static SignleMode3 getInstance(){
if(sm==null){
synchronized (SignleMode3.class) {
if(sm==null){
sm=new SignleMode3();
}
}
}
return sm;
}
private SignleMode3(){}
}