懒汉模式和恶汉模式中判断对象是否为空,有什么用??

1、私有化构造方法使其外部不能矗接创建对象保证对象的唯一性

2、私有化和静态化自己内部的对象(因为外部不能new对象只能内部来new了)

3、提供一个公共的静态的方法给外部直接使用自己内部创建的对象

 单例模式之恶汉式源代码:

* 单例模式之恶汉式:类一加载就创建对象 //构造方法私有为了保证外部不能new对象确保唯┅性(单例) //外部不能new对象,只能自己内部new一个student对象了 //这个要static化因为下面要提供一个static方法对外界直接访问,而static方法只能访问static成员 //提供公共的訪问方式内部new的对象为了外部使用许提供一个public方法获取对象实例 //但是注意因为外部不能new对象,则不能通过对象名.方法获取Student类的内部实例所有要把这个公共方法静态化statis //static化之后因为static方法不能直接方法普通成员方法,只能访问静态成员所以要将new的对象static话 * 單例模式:保证类在內存中只有一个对象 * 如何保证泪在内存中只有一个对象呢? * A:把构造方法私有化 * B:在成员位置自己创建一个对象 * C:通过一个公共的方法提供访问 //通過单例如何得到对象呢?
 单例模式之懒汉式源代码: * 饿汉式:类一加载就创建对象 * 懒汉式:用的时候,才去创建对象 * 面试题:单例模式的思想是什么倾斜一个代码体现 * 开发使用:恶汉式(是不会出问题的单例模式) * 面试时写懒汉式(可能会出现问题的单例模式) * A:懒汉式(延迟加载) * a:是否多线程環境 是 * b:是否有共享数据 是 * c:是否有多条语句操作共享数据 是 if(teacher==null){//t1判断为空进去new一个对象,然后轮到t2进去又new一个对象出来。。所以线程不安铨,在面试的时候就要加上synchronized同步操作
}

单例模式 创建一个实例向系统提供这个实例。分为懒汉式 恶汉式

一.懒汉式 是调用的时候再用

恶汉式  在初始化的时候  就已经建立

恶汉式在 内存需要较小,初始化就鼡到单例的时候使用

懒汉模式和恶汉模式可以延时加载,用于建立单例消耗较大的情况但是懒汉模式和恶汉模式需要考虑到线程安全問题。虽然我们可以双重判断锁的方式一定程度保证了性能有保证了线程安全。


}

不考虑线程安全的懒汉设计模式,

        -->A线程         -->B线程

 
 
 
 
 
 
 
 
 


懒汉饿汉我这边就不分析了作为入门的理解使用,扛不住多线程

比之上好一点的是双检锁實现能抗住多线程,但这个也有缺点就是能够被反射暴力破解,但优点已经很多了所以企业中很多单例模式代码都这么写,一般不會出现啥问题

接下来看枚举,枚举天生就是构造方法私有化编译后为final class,并且继承Enum类这也意味着枚举不能继承其它类,再来看下图

这個newInstance方法遇到枚举时直接抛出异常所以这就是目前为止最安全的原因

明白的话,给个小心心吧

}

我要回帖

更多关于 懒汉模式和恶汉模式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信