设计模式之单例模式(python实现)
2013-03-10 20:47
239 查看
本小节要介绍的设模式是:单例模式
个人认为,单例模式是所有的设计模式中较为简单的一个模式,但别看它简单,在实际的应用中却实使用得相当广泛。
单例模式主要被应用在这样的场景中:在程序的运行过程中始终保持一个对象。如线程池,注册表,缓存管理。这些对象如果在程序中保持多个实例,那么在程序的运行中会出现许多问题。
下面给出单例模式的一个简单定义:
确保一个类只有一个实例,并提供一个全局的访问点
说到这里,你可能会一下想到一个概念:全局变量。
的确,全局变量也可以实现一个类似于单例的功能,但全局变量在程序的一开始就会被实例化。如果这个全局变量在程序的运行过程中一次也没有被用到,那这个全局变量所占用的资源就会被白白地浪费掉。因此全局变量是无法做到申请时创建的。
好了,话不多说,看代码吧:
个人认为,单例模式是所有的设计模式中较为简单的一个模式,但别看它简单,在实际的应用中却实使用得相当广泛。
单例模式主要被应用在这样的场景中:在程序的运行过程中始终保持一个对象。如线程池,注册表,缓存管理。这些对象如果在程序中保持多个实例,那么在程序的运行中会出现许多问题。
下面给出单例模式的一个简单定义:
确保一个类只有一个实例,并提供一个全局的访问点
说到这里,你可能会一下想到一个概念:全局变量。
的确,全局变量也可以实现一个类似于单例的功能,但全局变量在程序的一开始就会被实例化。如果这个全局变量在程序的运行过程中一次也没有被用到,那这个全局变量所占用的资源就会被白白地浪费掉。因此全局变量是无法做到申请时创建的。
好了,话不多说,看代码吧:
class Singleton(object): ''' A python style singleton ''' def __new__(cls, *args, **kw): if not hasattr(cls, '_instance'): org = super(Singleton, cls) cls._instance = org.__new__(cls, *args, **kw) return cls._instance if __name__ == '__main__': class SingleSpam(Singleton): def __init__(self, s): self.s = s def __str__(self): return self.s s1 = SingleSpam('spam') print id(s1), s1 s2 = SingleSpam('spa') print id(s2), s2 print id(s1), s1
相关文章推荐
- Python实现设计模式之写在前面
- 23种设计模式之python实现--Decorator模式
- 设计模式十(适配器模式,python语言实现)
- 设计模式十二(组合模式,python语言实现)
- 设计模式十八(观察者模式,python语言实现)
- 设计模式十九(中介者模式,python语言实现)
- [python实现设计模式]-3.简单工厂模式-触宝开放平台
- 23种设计模式之python实现--抽象工厂
- Python实现设计模式--03.抽象工厂模式(Abstract Factory Pattern)
- python实现常见的设计模式-简单工厂模式
- Python设计模式中单例模式的实现及在Tornado中的应用
- 23种设计模式之python实现--State模式
- 流畅的python 第六章: 使用一等函数实现设计模式
- python实现的工厂方法--设计模式初级
- 设计模式之单例模式与工厂模式的Python实现(一)
- Python实现设计模式--01.单例模式(Singleton Pattern)
- 设计模式四(装饰模式,采用python 实现)
- 设计模式六(建造者模式,采用python实现)
- 23种设计模式之python实现--Composite模式
- 设计模式之策略模式(python实现)