zoukankan      html  css  js  c++  java
  • Python Singleton Pattern(单例模式)

    简介

    单例模式(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__中的方法最先被调用

  • 相关阅读:
    Java常见异常处理情况
    动手动脑总结
    动手动脑 总结
    二柱子测试三
    动手动脑总结
    动手动脑总结
    Docker同步IDEA
    UISlider
    Docker 部署 uwsgi+nginx + django
    UITableView 九宫格
  • 原文地址:https://www.cnblogs.com/dbf-/p/10991960.html
Copyright © 2011-2022 走看看