Python: Borg Pattern

2012-04-15 12:44

Das Borg Pattern habe ich diese Woche kennen gelernt und wollte es kurz hier verewigen. Das Borg Pattern sorgt dafür, dass jede erstellte Instanz den gleichen Zustand hat. Oft wird das Borg Pattern in Verbindung mit dem Singleton Pattern genannt. Von einem Singleton kann nur eine Instanz erstellt werden, von einem Borg können beliebig viele Instanzen erstellt werden.

Implementieren kann man es so:

class Borg:
    _state = {}
    def init(self):
        self.dict = self._state
 

Hier noch ein Beispiel zum Verständnis:

>>> b = Borg()

>>> b.foo = 42

>>> b.__dict__

{'foo': 42}

>>> c = Borg()

>>> c.__dict__

{'foo': 42}

>>> c.cheese = True

>>> b.cheese

True

>>> b == c

False

Wie man sieht, teilen sich die Instanzen zwar ihren Zustand, sind aber nicht das gleiche Objekt.