java设计模式之单例模式

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

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

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

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

demo代码如下:


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

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


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


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

如下:


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


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章