Creational Design Patterns: Singleton

Singleton is needed when you want only one object to be instantiated from a class. Singleton ensures that class has only one instance, and that instance has global access, you can call it object oriented way of initializing global variable. An example for this would be, for our cake website we keep a cache that is a singleton which will have all information, In this way we would not need to retrieve information from its original source.

Singleton Example with Cache


Following is the implementation

""" Creational Pattern - Singleton """

class CakeApp():
    _cake_shared_details = {}

    def __init__(self):
        # Creating a dict
        self.__dict__ = self._cake_shared_details

class CacheSingletonImplementation(CakeApp):
    def __init__(self,**kwargs):
        # Updating dict each time a new cake is added to the CakeApp

    def __str__(self):
        # Returning the dict
        return str(self._cake_shared_details)

#Creating singleton object
cake = CacheSingletonImplementation(Vanilla='$10')
# Printing object

>>{'Vanilla': '$10'}


Singleton helps solving two problems:

  1. Single Responsibility Principle
  2. Provides global access for the object


Hope this was useful, stay tuned for more on design patterns.



Leave a Reply