单例设计模式
单例设计模式
- 作用:在应用程序中有保证最多只能有一个实例
- 好处:
提升运行效率
实现数据共享比如:application对象,其在四大作用域共享 - 懒汉式
为什么叫懒汉式:因为对象只有被调用的时候才会被创建
单例设计模式:
第一步:构造方法私有化,那么其他类就不可以实例化这个对象,
public class SingleTon {
//由于对象需要被静态方法调用,所以对象设置为static
//由于对象是static,必须把设置访问权限修饰符改为private,如果是public的话,不经过访问入口
private static SingleTon singleTon;
private SingleTon(){} //设置成私有化的时候需要对外提供一个访问入口
//实例方法必须通过对象调用,此时不可以,所以将方法设置为静态方法
public static SingleTon getInstance(){
//添加逻辑 如果实例化过,直接返回
if (singleTon == null){
/**
* 多线程访问下,可能出现if同时成立的情况,添加锁
*/
synchronized (SingleTon.class){
if (singleTon == null){
singleTon = new SingleTon();
}
}
}
return singleTon;
}
}
由于添加了锁,所以导致了效率的降低
4. 饿汗式
解决了多线程访问可能出现同一个对象和效率低的问题
public class NewSingleTon {
//为了避免锁的冲突以及效率问题,在类加载的时候进行实例化
private static NewSingleTon newSingleTon = new NewSingleTon();
private NewSingleTon(){}
public static NewSingleTon getInstance(){
return newSingleTon;
}
}
- 测试类
public class Test {
public static void main(String[] args) {
SingleTon singleTon = SingleTon.getInstance();
SingleTon singleTon1 = SingleTon.getInstance();
System.out.println(singleTon == singleTon1);
}
}