Java设计模式之单例模式
【摘要】
推荐资源站:https://zhimalier.com/
单例模式常用两种写法:懒汉式单例、饿汉式单例 单例模式特点: 只能有一个实例 定义一个私有的、静态的本身的对象 创建一个共有的获取这个对象的方法 总之,选择单例模式是为了避免不一致的状态
一、懒汉式单例
在第一次调用的时候实例化自己
public class Lazy { //1、 构造方法私有化 p...
推荐资源站:https://zhimalier.com/
单例模式常用两种写法:懒汉式单例、饿汉式单例
单例模式特点:
只能有一个实例
定义一个私有的、静态的本身的对象
创建一个共有的获取这个对象的方法
总之,选择单例模式是为了避免不一致的状态
一、懒汉式单例
在第一次调用的时候实例化自己
public class Lazy {
//1、 构造方法私有化
private Lazy(){}
//2、创建一个私有的静态对象
private static Lazy instance=null;
//3、共有的获取这个对象的方法 , static
public static Lazy getInstance(){
if( instance == null){
instance = new Lazy();
}
return instance;
}
}
Lazy通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Lazy的唯一实例只能通过getInstance()方法访问。但线程不安全
二、饿汉式单例
public class Lazy {
//1、 构造方法私有化
private Lazy(){}
//2、创建一个私有的静态对象
private static Lazy instance=new Lazy();
//3、共有的获取这个对象的方法 , static
public static Lazy getInstance(){
return instance;
}
}
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。
三、饿汉式和懒汉式区别
饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,
而懒汉比较懒,只有当调用getInstance的时候,才会去初始化这个单例。
文章来源: zhima.blog.csdn.net,作者:芝麻粒儿,版权归原作者所有,如需转载,请联系作者。
原文链接:zhima.blog.csdn.net/article/details/52005618
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)