单例模式
Posted 羊小羚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式相关的知识,希望对你有一定的参考价值。
实现:
# 单例实现:
class Foo: __v = None @classmethod #类方法 def get_instance(cls): if cls.__v: return cls.__v else: cls.__v = Foo() return cls.__v # obj1 = Foo.get_instance() # print(obj1) # obj2 = Foo.get_instance() # print(obj2) # obj3 = Foo.get_instance() # print(obj3)
适用场景:
只创建一个实例,节省空间。
数据库连接池
原理:在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。
# tornado中的IOloop class IOLoop(): @staticmethod def instance(): if not hasattr(IOLoop, "_instance"): with IOLoop._instance_lock: if not hasattr(IOLoop, "_instance"): IOLoop._instance = IOLoop() return IOLoop._instance
以上是关于单例模式的主要内容,如果未能解决你的问题,请参考以下文章