首页 > 代码库 > 设计模式学习笔记(十四:单件模式)

设计模式学习笔记(十四:单件模式)

1.1概述

    保证一个类仅有一个实例,并提供一个访问它的全局访问点。这就是单件模式的定义。

    在某些情况下,我们可能需要某个类只能创建一个对象,即不让用户用该类实例化出多于两个的实例。

  例如,在一个公文管理系统中,公文类的实例“公文文件”,需要将公章类的实例作为自己的一个成员,以表明自己是一个有效的公文文件,那么系统的设计者就需要保证公章类只有一个实例,不能允许用户使用公章类的构造方法再创建出第2个实例。

  单件模式是关于怎样设计一个类,并使该类只有一个实例的成熟模式,该模式的关键是将类的构造方法设置为private权限,并提供一个返回它的唯一实例的类方法(static)。

 

1.2模式的结构

单件模式的结构非常简单,只有一种角色:

(1)单件类(Singleton):单件类只可以创建出一个实例。

 单件模式结构类图如下所示:技术分享

单件类的设计有如下特点:

(1)单件类中包含有自身声明的类变量,这个类变量就是单件类唯一的实例。

(2)单件类的构造方法访问权限是private。为了确保单件类中自身声明的类变量是单件类唯一的实例,单件类必须将构造方法的访问权限设置为private。这样一来其他类都无法使用单件类创建的对象。

(3)单件类负责创建自己唯一的实例,并提供访问该实例的类方法。由于单件类的构造方法被设置为private,所以单件类必须自己负责创建自身声明的实例。为了让用户使用单件类这个唯一实例,单件类必须提供一个类方法,以便其他用户使用单件类的类名就可以调用这个类方法访问使用单件类这个唯一实例。

 

1.3单件模式的优点

1)单件类的唯一实例由单件类本身控制,所以可以很好地控制用户何时访问它。

 

1.4适合使用单件模式的情景

1)当系统需要某个类只能有一个实例

设计模式学习笔记(十四:单件模式)