JAVA设计模式之单例模式 - JAVA课堂笔记整理

本文详细介绍了单例设计模式的两种实现方式,并对比了两者的区别。第一种方式通过在类加载时创建单例对象来确保唯一性;第二种方式则是在首次调用时创建单例对象,这种方式需要考虑线程安全问题。

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

1、设计模式总共有23种

2、single(单例设计模式):是用来解决可以保证一个类在内存当中对象唯一性的问题。

如何保证对象的唯一性?步骤:

A、构造函数私有化,同时不需要在里面写任何代码(私有化的目的:就是不让对方建立该类对象。这就造成single模式里面的对象无法在main()方法里面进行初始化new)

B、在本类中建立一个(私有并静态的)本类对象(在本类中new一个本类的对象,因为在本类中,它也是一个成员,所以将其私有化)

C、对外提供一个(静态)方法返回该对象[getXXX()],让外界获取该对象。(因为是single模式,所以返回对象的类型为single)

class Single{

       private static final Single s = new Single();//**************B

       private Single(){};//******************A

       public static Single getSingle(){   //***************C

              return s;

       }

}

 

3、单例模式的另一种写法(面试中常见)

class Single{

       private static Single s=null;

       private Single(){};

       public static Single getSingle(){ //在static后面需要加上一个synchronized

             if(s==null){

                 s = new Single();

                 return s;

              }

       }

}

4、这两种写法的区别:

A、第一种写法的单例对象随着类的加载而加载,第二种写法的单例对象被调用的时候才

加载。

B、同步性:第二种写法如果不加synchronized容易出现安全隐患

 

转载于:https://www.cnblogs.com/golon/archive/2011/11/19/2255281.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值