单例模式是指,在整个应用进程中,有且最多只存在一个实例对象。分为饿汉模式和懒汉模式,下面就是java代码的实现。
- 饿汉模式
/**
* 饿汉模式:来了就要吃,相当于有现成的
* @author Administrator
*
*/
public class EhanSingleTon {
//1、私有的静态变量,已经new好了,所以是饿汉模式
private static EhanSingleTon singleTon = new EhanSingleTon();
//2、私有的构造方法
private EhanSingleTon(){}
//3、公有的静态getSingleTon()方法
public static EhanSingleTon getEhanSingleTon(){
return singleTon;
}
}
- 懒汉模式
/**
* 懒汉模式:来了现做,才能吃
* @author Administrator
*
*/
public class LazyManSingleTon {
//1、私有的静态变量,这里没有new出来,所以是懒汉模式
private static LazyManSingleTon lazyManSingleTon;
//2、私有的构造方法
private LazyManSingleTon(){}
//3、公有的静态getSingleTon()方法
public static LazyManSingleTon getLazyManSingleTon(){
synchronized(LazyManSingleTon.class){//线程不安全,所以要加锁
if(lazyManSingleTon==null){
lazyManSingleTon = new LazyManSingleTon();
}
}
return lazyManSingleTon;
}
}
测试类:
public class SingleTest {
public static void main(String[] args) {
System.out.println(EhanSingleTon.getEhanSingleTon());
System.out.println(EhanSingleTon.getEhanSingleTon());
System.out.println(EhanSingleTon.getEhanSingleTon());
System.out.println(LazyManSingleTon.getLazyManSingleTon());
System.out.println(LazyManSingleTon.getLazyManSingleTon());
System.out.println(LazyManSingleTon.getLazyManSingleTon());
}
}
运行结果: