关于 JAVA 单例模式 两种创建方式

本文深入探讨了单例模式,一种确保类只有一个实例的设计模式。详细介绍了懒汉模式和饿汉模式的区别,通过代码示例展示了如何实现这两种模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在物色新东家,闲着无聊发一下博客,小白第一篇博客 如有不对的地方希望各位大神指点一下
单例模式指在核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例
常用的单例模式有两种 一种在需要时候才去获取该实例,俗称懒汉模式,一种在程序运行时立刻创建一个实例存放在内存中,俗称饿汉模式。好俗。。

先介绍懒汉模式。上代码,不写说明了。。。

public class TestClazz{

    private static TestClazz testClazz;
	
	//将构造器私有  外界不能创建该类的实例 只能通过静态方法获取该类实例
    private TestClazz(){}

	//定义一个获取该类实例的   静态  方法 
	//实例方法只能通过当前类的实例对象调用 而构造器被私有  不能创建该类实例 不可以调用该类实例方法
	//所以必须为静态方法
    public static TestClazz getInstance(){

        if (testClazz == null)       testClazz =  new TestClazz();  

        return  testClazz;
    }

}

class GetClazz{

        public static  void main(String[] args){
			
			//DeBug 模式可以看出两者的内存地址是一样的 
            TestClazz instance = TestClazz.getInstance();  //内存地址  : TestClazz@527
            TestClazz instance2 = TestClazz.getInstance();//内存地址  : TestClazz@527
        }
}

第二种为饿汉模式,跟懒汉模式不一样的是该模式在程序一运行时跟静态代码块一快初始化,获取时直接获取

public class TestClazz{

    private static TestClazz testClazz;

    private TestClazz(){}

    static
    {
	    //直接创建该类对象 当访问该类时第一时间将该类实例创建 然后返回
		//放在静态代码块中
       
            testClazz =  new TestClazz();
        
    }

    public static TestClazz getInstance(){       return  testClazz;       }

}

class GetClazz{

    public static  void main(String[] args){

			//DeBug 模式可以看出两者的内存地址是一样的 
        TestClazz instance = TestClazz.getInstance();   //内存地址  : TestClazz@527

        TestClazz instance2 = TestClazz.getInstance();  //内存地址 : TestClazz@527
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值