9.2. Singleton

Intent

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

AKA

Highlander[]

[] Thanks to Mal Minhas and Mark Jacobs for this alternative name, which is inspired by the movie of the same name, the tag of which is 'There can be only one'.

9.2.1. Problem

9.2.1.1. Context

You wish to 'ensure a class only has one instance and provide a global point of access to it.' [Gamma et al., 1994]

9.2.1.2. Summary
  • A single instance of a class is required by a component or even the whole system. For example, to provide a single point of access to a physical device, such as a camera, or to a resource or resource pool, such as a logging object, a thread or a block of memory.[]

    [] See Pooled Allocation [Weir and Noble, 2000].

  • A way of synchronizing access to the single instance may be needed if you wish it to be in scope for different parts of a system and used by several threads or processes.

  • Instantiation of the object should controllable. Instantiation should either be deferred until the first time it is needed, or the object should be instantiated in advance of other objects, to ensure a particular order of initialization.

9.2.1.3. Description

This pattern is one of the simplest design patterns and arguably the most popular pattern found in [Gamma et al., 1994]. Hence in this discussion, rather than examine the pattern in itself, we place emphasis on how to implement it on Symbian OS, covering a range of different circumstances. For detailed discussion ...

Get Common Design Patterns for Symbian OS: The Foundations of Smartphone Software 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.