先来从生活中找到Singleton模式的需求案例来理解什么是Singleton模式(我们从网上可以找到如下案例):
1、美国总统的职位是唯一的,美国宪法规定了总统的选举,任期以及继任的顺序。这样,在任何时刻只能由一个现任的总统。无论现任总统的身份为何,其头衔"美利坚合众国总统"是访问这个职位的人的一个全局的访问点。
2、中国古代皇帝玉玺,也是只能有一个,不管在谁手里,是谁使用,都只能保证只有这么一个玉玺,有了它,才能拥有它所代表的一切权力,行使它所赋予的相关职责。
因此, Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这具类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者考虑的问题。
现在我们就一起来实现这种模式,Singleton模式的实现要分成单线程情况下的实现与在多线程情况下的实现两种情况.
一、在单线程情况下的实现
二、在多线程情况下的实现
三、测试结果
总结说明:
Singleton的实现过程实质是通过控制构造对象的过程来实现对构造对象个数的控制
单线程下的单件模式有几点要注意:
Singleton模式的扩展
前往:设计模式学习笔记清单