第2章 单例设计模式

在上一章中,我们探讨了设计模式及其分类。我们都知道,设计模式可以分三大类:结构型、行为型和创建型模式。

在这一章中,我们将学习单例设计模式。单例设计模式是应用开发过程中最简单和最著名的一种创建型设计模式。本章首先会对单例模式进行简要介绍,然后提供一个采用了该模式的实际例子,在Python代码示例的帮助下,对其进行深入的剖析。此外,本章还会介绍Monostate(或者Borg)设计模式,它是单例设计模式的一个变种。

在本章中,我们将会涉及以下主题:

  • 理解单例设计模式;
  • 单例模式实例;
  • 单例设计模式的Python实现;
  • Monostate(Borg)模式。

在本章的结尾部分,我们将对单例模式进行简要总结。这将有助于读者针对单例设计模式的各个方面进行独立思考。

单例模式提供了这样一个机制,即确保类有且只有一个特定类型的对象,并提供全局访问点。因此,单例模式通常用于下列情形,例如日志记录或数据库操作、打印机后台处理程序,以及其他程序——该程序运行过程中只能生成一个实例,以避免对同一资源产生相互冲突的请求。例如,我们可能希望使用一个数据库对象对数据库进行操作,以维护数据的一致性;或者希望使用一个日志类的对象,将多项服务的日志信息按照顺序转储到一个特定的日志文件中。

简言之,单例设计模式的意图如下所示。

  • 确保类有且只有一个对象被创建。
  • 为对象提供一个访问点,以使程序可以全局访问该对象。
  • 控制共享资源的并行访问。

图2-1是单例模式的UML图。

图2-1

实现单例模式的一个简单方法是,使构造函数私有化,并创建一个静态方法来完成对象的初始化。这样,对象将在第一次调用时创建,此后,这个类将返回同一个对象。

在使用Python的时候,我们的实现方式要有所变通,因为它无法创建私有的构造函数。下面,我们一起看看如何利用Python语言来实现单例模式。 ...

Get Python设计模式(第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.