设计模式就该这样学:基于经典框架源码和真实业务场景
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第8章 单例模式

8.1 单例模式概述

8.1.1 单例模式的定义

单例模式(Singleton Pattern)指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点,属于创建型设计模式。

原文:Ensure a class has only one instance,and provide a global point of access to it.

8.1.2 单例模式的应用场景

单例模式在现实生活中的应用非常广泛,例如公司CEO、部门经理等都属于单例模型。J2EE标准中的ServletContext和ServletContextConfig、Spring框架应用中的ApplicationContext、数据库中的连接池等也都是单例模式。对于Java来说,单例模式可以保证在一个JVM中只存在单一实例。单例模式的应用场景主要有以下几个方面。

(1)需要频繁创建的一些类,使用单例可以降低系统的内存压力,减少GC。

(2)某些类创建实例时占用资源较多,或实例化耗时较长,且经常使用。

(3)频繁访问数据库或文件的对象。

(4)对于一些控制硬件级别的操作,或者从系统上来讲应当是单一控制逻辑的操作,如果有多个实例,则系统会完全乱套。

8.1.3 单例模式的UML类图

单例模式的UML类图如下。

img

Singleton类被称为单例类,通过隐藏构造方法,在内部初始化一次,并提供一个全局的访问点。

8.1.4 单例模式的通用写法

以下是单例模式的通用写法。

img