码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之单例模式

时间:2018-06-08 14:24:22      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:java反射   bsp   zed   pat   懒汉   设计   hung   就是   单例   

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反射会使单例模式失效
 
 
 

设计模式之单例模式

标签:java反射   bsp   zed   pat   懒汉   设计   hung   就是   单例   

原文地址:https://www.cnblogs.com/tspeking/p/tspeking.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!