Java设计模式---Singleton模式

单例模式:我们通常又称之为单子或单态模式。

为什么会出现单例模式呢?因为需求,有时候我们需要针对某个类,我们得到它的实例是同一个,无论获取多少次。因此我们就开始想怎么实现这个功能了。

①首先我们想到的肯定是不能在类的外面,采用new 关键字来创建实例了,因为每new一个就新产生了一个对象。因此我们 就想到了将构造器私有化,new的对象放在类里面去。 

②在类里面,再提供一个public 的静态方法供外部去调用,通过方法得到该类的实例。这样我们就实现了单例。

demo代码如下:

PS:有人也将getInstance()这个方法称之为静态工厂方法。

我们测试一下,结果如下:

当然,在某些书籍上面将上面的单例实现称之为“饿汉”单例模式。所以又有另一种“懒汉”单例模式,如下,基本原理是一样的,将构造器私有化:

然而在多线程高并发的情况下。可能还是会出现多个对象存在的情况,因此我们可以将方法添加同步锁的机制,但这样又会导致性能降低。

如下:

扩展一下思维,我们的单例可以,扩展为多例,如下:

我们将需要的car 都放在 carList里面,就可以实现多例了,最典型的例子就是我们jdbc里面的连接池,就应该是多例实现的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值