Python Singleton设计模式 - 静态方法与类方法评估



foll。是使用静态方法的样本单例设计模式实现。我的问题是 - 如果我们使用类方法而不是静态方法会有什么区别?

class Singleton:
   __instance = None
   @staticmethod 
   def getInstance():
      """ Static access method. """
      if Singleton.__instance == None:
         Singleton()
      return Singleton.__instance
   def __init__(self):
      """ Virtually private constructor. """
      if Singleton.__instance != None:
         raise Exception("This class is a singleton!")
      else:
         Singleton.__instance = self
s = Singleton()
print s
s = Singleton.getInstance()
print s
s = Singleton.getInstance()
print s

在Singleton设计模式中,我们仅创建一个在上述实现中实现的类的实例。

我们应该在此处使用静态方法,因为静态方法将具有以下好处:类方法可以访问或修改类状态,而静态方法无法访问或修改它,我们不想修改任何内容,我们只想返回Singleton实例。通常,静态方法对班级状态一无所知。它们是采用一些参数并处理这些参数的实用程序类型方法。另一方面,类方法必须将类作为参数。

最新更新