码迷,mamicode.com
首页 > 编程语言 > 详细

Python Singleton Pattern(单例模式)

时间:2019-06-08 22:53:22      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:原理   软件设计   pattern   att   python   单例   方法   eth   get   

简介

单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
当一个类中的静态的值被反复调用时会造成浪费,就可以采用单例模式

实现

原理

示例:

class Foo(object):
    instance = None

    def __init__(self):
        pass

    @classmethod
    def get_instance(cls, *args, **kwargs):
        if Foo.instance:
            return Foo.instance
        else:
            Foo.instance = Foo(*args, **kwargs)
            return Foo.instance


obj1 = Foo.get_instance()
obj2 = Foo.get_instance()
print(obj1, obj2)

注意:这样会造成创建对象方式改变,所以采用下面的方法

通过类实现

示例:

class Foo(object):
    instance = None

    def __init__(self):
        pass

    def __new__(cls, *args, **kwargs):
        if Foo.instance:
            return Foo.instance
        else:
            Foo.instance = object.__new__(cls, *args, **kwargs)
            return Foo.instance


obj1 = Foo()
obj2 = Foo()
print(obj1, obj2)

由于类的生成调用顺序为:new --> init --> call
所以在__new__中的方法最先被调用

Python Singleton Pattern(单例模式)

标签:原理   软件设计   pattern   att   python   单例   方法   eth   get   

原文地址:https://www.cnblogs.com/dbf-/p/10991960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!