Java单例模式

单例模式

单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。

懒汉式
饿汉式
1、懒汉式:在使用时创建对象

public class TestSingle1 {
    //1、私有静态变量
    private static TestSingle1 t = null;
    //2.私有化构造器
    private TestSingle1(){}              //私有化构造器,在类外部时不可以直接new
    //3.提供一个公有方法,返回这个对象
    public synchronized static TestSingle1 newInstance(){	//注意多线程情况
        if(t==null)
            t = new TestSingle1(); 		 //这里才创建好
        return t;
    }

    //测试类
    public static void main(String[] args) {
        TestSingle1 t1 = newInstance();
        TestSingle1 t2 = newInstance();
        System.out.println(t1);
        System.out.println(t2);
    }
}

结果显示:
在这里插入图片描述
两个对象的地址一样,说明两个对象是同一个

2、饿汉式:当加载类时就创键好

public class TestSingle2 {
    //1、私有静态变量
    private static TestSingle2 t = null;
    //2.私有化构造器
    private TestSingle2(){}

    static {
        t = new TestSingle2();  	//当类被加载时就new
    }
    //3.提供一个公有方法,返回这个对象
    public static TestSingle2 getInstance(){
        return t;
    }

    public static void main(String[] args) {
        TestSingle2 t1 = getInstance();
        TestSingle2 t2 = getInstance();
        System.out.println(t1);
        System.out.println(t2);
    }
}

输出结果和上面一致。

总结

所谓懒汉模式,就是程序比较懒,只有需要他的时候,才会创建对象,如果有了,就不在创建,这个类的构造函数一定是私有的。所以在创建对象时,需要进行检查,所以这时候很慢,一旦对象完成创建,加载类时,速度很快。至于饿汉模式,就是这个类时刻准备着,一旦加载这个类,立马创建对象,所有类很多的时候,加载显的程序运行缓慢,这个类的构造函数也是私有的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值