Python Singleton Pattern

PHP de çok sık kullanıyorum ama Python ile Singleton yapıya daha önce hiç ihtiyaç duymamıştım. Hatırlat projesini güncellerken ayar ve veritabanı sınıflarında bir çok işlemin yeniden yapılması yerine böyle bir yapıyı kurmak daha mantıklı olacaktı. Daha önce cackephp de gördüğüm ve bazı projelerde kullandığım yöntemi Python için düzenledim. Öncelikle bir sınıf kaydediciye ihtiyacımız var. Aşağıdaki şekilde bu kaydediciyi oluşturuyoruz.

class ClassRegistry:
    _classes = {}

    @staticmethod
    def getClass(key):
        if ClassRegistry._classes.has_key(key):
            return ClassRegistry._classes[key]
        else:
            raise Exception('Class not registered')

    @staticmethod
    def setClass(key, _class):
        ClassRegistry._classes[key] = _class

Test sınıfı:

class A:
    def __init__(self):
        self.number = 1
        print "initialize A"

Test kodları:

ClassRegistry.setClass('A', A())

# A sınıfı alınıyor
_class1 = ClassRegistry.getClass('A')

print _class1.number

_class1.number = 2

_class2 = ClassRegistry.getClass('A')

print _class2.number

_class2.number = 5

print _class1.number

print _class1
print _class2

Bu yöntem haricinde bir çok farklı yol mevcut. Onlardan bir taneside wikipedia üzerinde.

This entry was posted in Genel and tagged , . Bookmark the permalink.

One Response to Python Singleton Pattern

  1. Pingback: Barış Yüksel » Blog Archive » Singleton Tasarım Deseni

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>