1.单例模式的原理:
单例模式本质就是希望我们的JVM中只有一份实体对象.这个应用程序共享这个唯一对象.
2.单例模式的形式:
1)饥汉模式
2)饱汉模式
饥汉模式:应用在编译的时候就已经确定创建了一个实例
饱汉模式:就是在运行中才确定我们的实例.
区别:
1)在多线程的环境下饱汉模式会出现线程安全的问题,这样导致JVM中可能存在多个对象 这样违背了我们的单例模式.
2)我在非线程的情况,我们使用饥汉模式要好一些,多线程的情况下我们采用饱汉模式
总结:1)我们需要有一个静态的对象属性,并且私有化.
2)要有一个私有的构造函数
3)要有一个静态的返回单例对象的方法,这个方法名最好统一成getInstance().
/*
* 饥汉模式:应用在编译的时候就已经确定创建了一个实例
*/
public class Single {
private static Single single = new Single();
private Single(){}
public static Single getInstance(){
return single;
}
public void disp(){
System.out.println("测试单例模式!");
}
}
/*
* 饱汉模式:在运行的时候才创建实例对象
* 多线程的模式下可能会多个对象,违背单例模式 ,所以使用synchronized
*/
public class SingleSyn {
private static SingleSyn single = null;
private SingleSyn(){};
public synchronized static SingleSyn getInstance(){
if(single==null){
single = new SingleSyn();
}
return single;
}
}