设计模式之单例模式

1、什么是单例模式?
单例模式就是一个类只会有一个实例。
2、单例模式实现方式
2.1 懒汉模式
/**
* 保证该类只会生成一个类实例
*/
public class LayzSinglePattern {
private static LayzSinglePattern instance ;
 
/**
* 静态内部类,静态内部类是第一次被使用的时候加载的
*/
private static class LayzHolder {
private static final LayzSinglePattern INSTANCE = new LayzSinglePattern();
}
 
private LayzSinglePattern(){
//do something
}
 
/**
* 线程不安全的
* @return
*/
public static LayzSinglePattern getInstance() {
if (null == instance) {
instance = new LayzSinglePattern();
}
return instance;
}
 
/**
* 线程安全的
* @return
*/
public static synchronized LayzSinglePattern getInatanceSecurity() {
if (null == instance) {
instance = new LayzSinglePattern();
}
return instance;
}
 
/**
* 双重锁保证线程安全
* @return
*/
public static LayzSinglePattern getInstanceDoubbleLock() {
if (null == instance) {
synchronized(LayzSinglePattern.class) {
if (null == instance){
instance = new LayzSinglePattern();
}
}
}
 
return instance;
}
 
/**
* 静态内部类保证线程安全
* @return
*/
public static LayzSinglePattern getInstanceInnerClass() {
return LayzHolder.INSTANCE;
}
 
}
 
2.2 饿汉模式
/**
* 饿汉模式采用关键字final修饰,final天生是线程安全的
*/
public class HungrySinglePattern {
 
private static final HungrySinglePattern instance = new HungrySinglePattern();
 
public static HungrySinglePattern getInstance() {
return instance;
}
}
 
 注意:JAVA反射会使单例模式失效
 
 
 

posted on 2018-06-08 11:40  tspeking  阅读(500)  评论(0编辑  收藏  举报

导航